I followed the following steps in order to build CppDB:
svn co http://cppcms.svn.sourceforge.net/svnroot/cppcms/cppdb/trunk cppdb-trunk
cd cppdb-trunk
cmake ~/Desktop/cppdb-trunk
make
make install
Afterwards, I'm trying to compile and run the file example1.cpp from the examples directory.
When I run gcc example1.cpp I get the following errors:
/tmp/ccGWenrv.o: In function main':
example1.cpp:(.text+0x2a): undefined reference tostd::allocator::allocator()'
example1.cpp:(.text+0x42): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)'
example1.cpp:(.text+0x58): undefined reference tocppdb::session::session(std::__cxx11::basic_string, std::allocator > const&)'
example1.cpp:(.text+0x64): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
example1.cpp:(.text+0x73): undefined reference tostd::allocator::~allocator()'
example1.cpp:(.text+0x91): undefined reference to cppdb::session::operator<<(char const*)'
example1.cpp:(.text+0xa5): undefined reference tocppdb::statement::operator<<(void ()(cppdb::statement&))'
example1.cpp:(.text+0xb4): undefined reference to cppdb::statement::~statement()'
example1.cpp:(.text+0xd2): undefined reference tocppdb::session::operator<<(char const)'
example1.cpp:(.text+0xe6): undefined reference to cppdb::statement::operator<<(void (*)(cppdb::statement&))'
example1.cpp:(.text+0xf5): undefined reference tocppdb::statement::~statement()'
example1.cpp:(.text+0x170): undefined reference to cppdb::statement::statement()'
example1.cpp:(.text+0x18e): undefined reference tocppdb::session::operator<<(char const*)'
example1.cpp:(.text+0x1db): undefined reference to cppdb::statement::operator<<(tm const&)'
example1.cpp:(.text+0x1e8): undefined reference tocppdb::statement::operator<<(char const*)'
example1.cpp:(.text+0x1fd): undefined reference to `cppdb::statement::operator=(cppdb::statement const&)'
etc.
Any suggestions?
Try g++ example1.cpp -lcppdb. You need to link against the C++ run-time library (using g++ instead of gcc takes care of that) and against CppDB itself (the -lcppdb part). If GCC cannot find the -lcppdb library, you'll have to provide the path using -L, and you may have to use LD_LIBRARY_PATH at run time as well.
I am trying to compile a program using cmake, and am seeing the following linker error:
/home/quant/bin/boost_1_61_0/stage/lib/libboost_log_setup.so:
undefined reference to
boost::filesystem::path_traits::convert(wchar_t const*, wchar_t
const*, std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >&, std::codecvt<wchar_t, char, __mbstate_t>
const&)' /home/quant/bin/boost_1_61_0/stage/lib/libboost_log.so:
undefined reference to
boost::filesystem::path_traits::dispatch(boost::filesystem::directory_entry
const&, std::__cxx11::basic_string,
std::allocator >&)'
The linker command that ninja generated looks like this:
g++ -pthread -DBOOST_ALL_DYN_LINK
utility/test/CMakeFiles/utilityTest.dir/loadCSVTests.cpp.o
utility/test/CMakeFiles/utilityTest.dir/main.cpp.o
utility/test/CMakeFiles/utilityTest.dir/randomDeviceTests.cpp.o -o
utility/test/utilityTest -rdynamic
/home/quant/bin/boost_1_61_0/stage/lib/libboost_thread.so
/home/quant/bin/boost_1_61_0/stage/lib/libboost_program_options.so
/home/quant/bin/boost_1_61_0/stage/lib/libboost_serialization.so
/home/quant/bin/boost_1_61_0/stage/lib/libboost_unit_test_framework.so
/home/quant/bin/boost_1_61_0/stage/lib/libboost_system.so
/home/quant/bin/boost_1_61_0/stage/lib/libboost_log.so
/home/quant/bin/boost_1_61_0/stage/lib/libboost_log_setup.so
/home/quant/bin/boost_1_61_0/stage/lib/libboost_filesystem.so
utility/lib/libutilityLib.a utility/testLib/libutilityTestLib.a
utility/lib/libutilityLib.a
/home/quant/bin/boost_1_61_0/stage/lib/libboost_thread.so
/home/quant/bin/boost_1_61_0/stage/lib/libboost_program_options.so
/home/quant/bin/boost_1_61_0/stage/lib/libboost_serialization.so
/home/quant/bin/boost_1_61_0/stage/lib/libboost_unit_test_framework.so
/home/quant/bin/boost_1_61_0/stage/lib/libboost_system.so
/home/quant/bin/boost_1_61_0/stage/lib/libboost_log.so
/home/quant/bin/boost_1_61_0/stage/lib/libboost_log_setup.so
/home/quant/bin/boost_1_61_0/stage/lib/libboost_filesystem.so
-Wl,-rpath,/home/quant/bin/boost_1_61_0/stage/lib
As you can see, I am linking against boost_filesystem and boost_system, so it's not the same problem as referenced on this SO post (and the many others like it).
I am using boost 1.61, which I compiled with gcc 5.3 (the same compiler as the one I'm compiling my program with).
What am I doing wrong?
I had a similar issue, this could be because of a new ABI which is introduced from gcc 5.1.
https://github.com/openframeworks/openFrameworks/issues/4203
I fixed mine by adding "add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)" to CMakeLists.txt
While installing Wangle, I encountered the following problem. I have already installed Boost, and I don't know why.
[ 65%] Built target wangle
Linking CXX executable bin/AcceptorTest
/usr/bin/ld: warning: libboost_filesystem.so.1.54.0, needed by /usr/local/lib/libfolly.so, may conflict with libboost_filesystem.so.1.61.0
/usr/bin/ld: warning: libboost_system.so.1.54.0, needed by /usr/local/lib/libfolly.so, may conflict with libboost_system.so.1.61.0
/usr/local/lib/libfolly.so: undefined reference to `boost::re_detail_106000::perl_matcher<char const*, std::allocator<boost::sub_match<char const*> >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::construct_init(boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags)'
/usr/local/lib/libfolly.so: undefined reference to `boost::re_detail_106000::get_mem_block()'
/usr/local/lib/libfolly.so: undefined reference to `boost::re_detail_106000::cpp_regex_traits_implementation<char>::transform_primary(char const*, char const*) const'
/usr/local/lib/libfolly.so: undefined reference to `boost::re_detail_106000::verify_options(unsigned int, boost::regex_constants::_match_flags)'
/usr/local/lib/libfolly.so: undefined reference to `boost::re_detail_106000::get_default_error_string(boost::regex_constants::error_type)'
/usr/local/lib/libfolly.so: undefined reference to `boost::re_detail_106000::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::string>, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::string> > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::construct_init(boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags)'
/usr/local/lib/libfolly.so: undefined reference to `boost::re_detail_106000::put_mem_block(void*)'
/usr/local/lib/libfolly.so: undefined reference to `boost::re_detail_106000::raise_runtime_error(std::runtime_error const&)'
/usr/local/lib/libfolly.so: undefined reference to `boost::re_detail_106000::cpp_regex_traits_implementation<char>::transform(char const*, char const*) const'
collect2: error: ld returned 1 exit status
make[2]: *** [bin/AcceptorTest] Error 1
make[1]: *** [CMakeFiles/AcceptorTest.dir/all] Error 2
make: *** [all] Error 2
Using clang instead of gcc, removing the atomic check in the CMakeList.txt and disabling tests made wangle build for me on Arch.
It currently won't build with GCC 7 (Issue) and GCC 5 threw a similar issue to yours for me.
CC=clang CXX=clang cmake . -DBUILD_TEST=0
(code above does not include the atomic check you need to remove in the CMakeList.txt yourself! Just search for atomic.)
I downloaded the nuwen distribution of MinGW, which comes with Boost (GCC 4.6.1 and Boost 1.47.0.). I want to use the Boost regex package in a c++ program. libboost_regex.a is contained in C:\dev\MinGW\lib, which is in my path as well as the library search path for MinGW. When I compile, it gives me lots and lots of errors. I tried giving it the exact path to the library in the g++ command line, but to no avail. My best attempt at compiling: g++ -o test -LC:\dev\MinGW -lboost_regex testBoost.cpp. The program I'm trying to run:
#include <iostream>
#include <boost/regex.hpp>
int main (int argc, char* argv[])
{
static const boost::regex exp ("hello regex!");
}
My humongous pile of errors:
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZN5boost9re_detail27cpp_regex_traits_char_layerIcEC2ERKNS0_21cpp_regex_traits_baseIcEE[boost::re_detail::cpp_regex_traits_char_layer<char>::cpp_regex_traits_char_layer(boost::re_detail::cpp_regex_traits_base<char> const&)]+0x20): undefined reference to `boost::re_detail::cpp_regex_traits_char_layer<char>::init()'
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZN5boost9re_detail11raw_storage6extendEj[boost::re_detail::raw_storage::extend(unsigned int)]+0x41): undefined reference to `boost::re_detail::raw_storage::resize(unsigned int)'
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZN5boost9re_detail18basic_regex_parserIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE4failENS_15regex_constants10error_typeEiSsi[boost::re_detail::basic_regex_parser<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::fail(boost::regex_constants::error_type, int, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int)]+0x214): undefined reference to `boost::regex_error::regex_error(std::string const&, boost::regex_constants::error_type, int)'
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZN5boost9re_detail18basic_regex_parserIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE4failENS_15regex_constants10error_typeEiSsi[boost::re_detail::basic_regex_parser<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::fail(boost::regex_constants::error_type, int, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int)]+0x21f): undefined reference to `boost::regex_error::raise() const'
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZN5boost9re_detail18basic_regex_parserIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE4failENS_15regex_constants10error_typeEiSsi[boost::re_detail::basic_regex_parser<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::fail(boost::regex_constants::error_type, int, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int)]+0x22a): undefined reference to `boost::regex_error::~regex_error()'
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZN5boost9re_detail18basic_regex_parserIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE4failENS_15regex_constants10error_typeEiSsi[boost::re_detail::basic_regex_parser<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::fail(boost::regex_constants::error_type, int, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int)]+0x285): undefined reference to `boost::regex_error::~regex_error()'
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZN5boost9re_detail19basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE16fixup_recursionsEPNS0_14re_syntax_baseE[boost::re_detail::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::fixup_recursions(boost::re_detail::re_syntax_base*)]+0x109): undefined reference to `boost::regex_error::regex_error(std::string const&, boost::regex_constants::error_type, int)'
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZN5boost9re_detail19basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE16fixup_recursionsEPNS0_14re_syntax_baseE[boost::re_detail::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::fixup_recursions(boost::re_detail::re_syntax_base*)]+0x114): undefined reference to `boost::regex_error::raise() const'
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZN5boost9re_detail19basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE16fixup_recursionsEPNS0_14re_syntax_baseE[boost::re_detail::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::fixup_recursions(boost::re_detail::re_syntax_base*)]+0x11f): undefined reference to `boost::regex_error::~regex_error()'
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZN5boost9re_detail19basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE16fixup_recursionsEPNS0_14re_syntax_baseE[boost::re_detail::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::fixup_recursions(boost::re_detail::re_syntax_base*)]+0x2e0): undefined reference to `boost::regex_error::regex_error(std::string const&, boost::regex_constants::error_type, int)'
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZN5boost9re_detail19basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE16fixup_recursionsEPNS0_14re_syntax_baseE[boost::re_detail::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::fixup_recursions(boost::re_detail::re_syntax_base*)]+0x2eb): undefined reference to `boost::regex_error::raise() const'
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZN5boost9re_detail19basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE16fixup_recursionsEPNS0_14re_syntax_baseE[boost::re_detail::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::fixup_recursions(boost::re_detail::re_syntax_base*)]+0x2f6): undefined reference to `boost::regex_error::~regex_error()'
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZN5boost9re_detail19basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE16fixup_recursionsEPNS0_14re_syntax_baseE[boost::re_detail::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::fixup_recursions(boost::re_detail::re_syntax_base*)]+0x345): undefined reference to `boost::regex_error::~regex_error()'
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZN5boost9re_detail19basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE16fixup_recursionsEPNS0_14re_syntax_baseE[boost::re_detail::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::fixup_recursions(boost::re_detail::re_syntax_base*)]+0x382): undefined reference to `boost::regex_error::~regex_error()'
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZN5boost9re_detail19basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE16create_startmapsEPNS0_14re_syntax_baseE[boost::re_detail::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::create_startmaps(boost::re_detail::re_syntax_base*)]+0x179): undefined reference to `boost::regex_error::regex_error(std::string const&, boost::regex_constants::error_type, int)'
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZN5boost9re_detail19basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE16create_startmapsEPNS0_14re_syntax_baseE[boost::re_detail::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::create_startmaps(boost::re_detail::re_syntax_base*)]+0x184): undefined reference to `boost::regex_error::raise() const'
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZN5boost9re_detail19basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE16create_startmapsEPNS0_14re_syntax_baseE[boost::re_detail::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::create_startmaps(boost::re_detail::re_syntax_base*)]+0x18f): undefined reference to `boost::regex_error::~regex_error()'
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZN5boost9re_detail19basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE16create_startmapsEPNS0_14re_syntax_baseE[boost::re_detail::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::create_startmaps(boost::re_detail::re_syntax_base*)]+0x2d6): undefined reference to `boost::regex_error::~regex_error()'
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZN5boost9re_detail19basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE15create_startmapEPNS0_14re_syntax_baseEPhPjh[boost::re_detail::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::create_startmap(boost::re_detail::re_syntax_base*, unsigned char*, unsigned int*, unsigned char)]+0x23d): undefined reference to `boost::regex_error::regex_error(std::string const&, boost::regex_constants::error_type, int)'
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZN5boost9re_detail19basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE15create_startmapEPNS0_14re_syntax_baseEPhPjh[boost::re_detail::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::create_startmap(boost::re_detail::re_syntax_base*, unsigned char*, unsigned int*, unsigned char)]+0x248): undefined reference to `boost::regex_error::raise() const'
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZN5boost9re_detail19basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE15create_startmapEPNS0_14re_syntax_baseEPhPjh[boost::re_detail::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::create_startmap(boost::re_detail::re_syntax_base*, unsigned char*, unsigned int*, unsigned char)]+0x253): undefined reference to `boost::regex_error::~regex_error()'
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZN5boost9re_detail19basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE15create_startmapEPNS0_14re_syntax_baseEPhPjh[boost::re_detail::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::create_startmap(boost::re_detail::re_syntax_base*, unsigned char*, unsigned int*, unsigned char)]+0x947): undefined reference to `boost::regex_error::~regex_error()'
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZNK5boost9re_detail31cpp_regex_traits_implementationIcE12error_stringENS_15regex_constants10error_typeE[boost::re_detail::cpp_regex_traits_implementation<char>::error_string(boost::regex_constants::error_type) const]+0x89): undefined reference to `boost::re_detail::get_default_error_string(boost::regex_constants::error_type)'
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZNK5boost9re_detail31cpp_regex_traits_implementationIcE12error_stringENS_15regex_constants10error_typeE[boost::re_detail::cpp_regex_traits_implementation<char>::error_string(boost::regex_constants::error_type) const]+0xe7): undefined reference to `boost::re_detail::get_default_error_string(boost::regex_constants::error_type)'
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZN5boost9re_detail19basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE12insert_stateEiNS0_19syntax_element_typeEj[boost::re_detail::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::insert_state(int, boost::re_detail::syntax_element_type, unsigned int)]+0x94): undefined reference to `boost::re_detail::raw_storage::insert(unsigned int, unsigned int)'
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZN5boost12object_cacheINS_9re_detail21cpp_regex_traits_baseIcEENS1_31cpp_regex_traits_implementationIcEEE3getERKS3_j[boost::object_cache<boost::re_detail::cpp_regex_traits_base<char>, boost::re_detail::cpp_regex_traits_implementation<char> >::get(boost::re_detail::cpp_regex_traits_base<char> const&, unsigned int)]+0x1e): undefined reference to `boost::scoped_static_mutex_lock::scoped_static_mutex_lock(boost::static_mutex&, bool)'
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZN5boost12object_cacheINS_9re_detail21cpp_regex_traits_baseIcEENS1_31cpp_regex_traits_implementationIcEEE3getERKS3_j[boost::object_cache<boost::re_detail::cpp_regex_traits_base<char>, boost::re_detail::cpp_regex_traits_implementation<char> >::get(boost::re_detail::cpp_regex_traits_base<char> const&, unsigned int)]+0x59): undefined reference to `boost::scoped_static_mutex_lock::~scoped_static_mutex_lock()'
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZN5boost12object_cacheINS_9re_detail21cpp_regex_traits_baseIcEENS1_31cpp_regex_traits_implementationIcEEE3getERKS3_j[boost::object_cache<boost::re_detail::cpp_regex_traits_base<char>, boost::re_detail::cpp_regex_traits_implementation<char> >::get(boost::re_detail::cpp_regex_traits_base<char> const&, unsigned int)]+0xdf): undefined reference to `boost::scoped_static_mutex_lock::~scoped_static_mutex_lock()'
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZNK5boost9re_detail31cpp_regex_traits_implementationIcE18lookup_collatenameEPKcS4_[boost::re_detail::cpp_regex_traits_implementation<char>::lookup_collatename(char const*, char const*) const]+0x10f): undefined reference to `boost::re_detail::lookup_default_collate_name(std::string const&)'
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZN5boost9re_detail31cpp_regex_traits_implementationIcE4initEv[boost::re_detail::cpp_regex_traits_implementation<char>::init()]+0xe3): undefined reference to `boost::re_detail::raise_runtime_error(std::runtime_error const&)'
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZN5boost9re_detail31cpp_regex_traits_implementationIcE4initEv[boost::re_detail::cpp_regex_traits_implementation<char>::init()]+0x11a): undefined reference to `boost::re_detail::get_default_error_string(boost::regex_constants::error_type)'
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZN5boost16cpp_regex_traitsIcE16get_catalog_nameEv[boost::cpp_regex_traits<char>::get_catalog_name()]+0x1f): undefined reference to `boost::scoped_static_mutex_lock::scoped_static_mutex_lock(boost::static_mutex&, bool)'
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZN5boost16cpp_regex_traitsIcE16get_catalog_nameEv[boost::cpp_regex_traits<char>::get_catalog_name()]+0x3e): undefined reference to `boost::scoped_static_mutex_lock::~scoped_static_mutex_lock()'
C:\Users\nate\AppData\Local\Temp\ccTuJyrB.o:testBoost.cpp:(.text$_ZN5boost16cpp_regex_traitsIcE16get_catalog_nameEv[boost::cpp_regex_traits<char>::get_catalog_name()]+0x56): undefined reference to `boost::scoped_static_mutex_lock::~scoped_static_mutex_lock()'
collect2: ld returned 1 exit status
Edit: As suggested by Michael Burr, I ran g++ -Wl --verbose. Here is the output from it:
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=c:/dev/mingw/bin/../libexec/gcc/i686-pc-mingw32/4.6.1/lto-wrapper.exe
Target: i686-pc-mingw32
Configured with: ../src/configure --prefix=/c/temp/gcc/dest --enable-languages=c,c++ --with-arch=i686 --with-tune=generic --disable-libstdcxx-pch --disable-nls --disable-shared --disable-sjlj-exceptions --disable-win32-registry --enable-checking=release --disable-lto
Thread model: win32
gcc version 4.6.1 (GCC)
COLLECT_GCC_OPTIONS='-o' 'test.exe' '-Wl' '-v' '-LC:\dev\MinGW\' '-mtune=generic' '-march=i686'
c:/dev/mingw/bin/../libexec/gcc/i686-pc-mingw32/4.6.1/cc1plus.exe -quiet -v -iprefix c:\dev\mingw\bin\../lib/gcc/i686-pc-mingw32/4.6.1/ testBoost.cpp -quiet -dumpbase testBoost.cpp -mtune=generic -march=i686 -auxbase testBoost -Wl -version -o C:\Users\nate\AppData\Local\Temp\ccX1SmTk.s
cc1plus.exe: error: unrecognized command line option '-Wl'
GNU C++ (GCC) version 4.6.1 (i686-pc-mingw32)
compiled by GNU C version 4.6.1, GMP version 5.0.2, MPFR version 3.0.1-p4, MPC version 0.9
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring nonexistent directory "c:\dev\mingw\bin\../lib/gcc/i686-pc-mingw32/4.6.1/../../../../i686-pc-mingw32/include"
ignoring duplicate directory "c:/dev/mingw/lib/gcc/../../lib/gcc/i686-pc-mingw32/4.6.1/../../../../include/c++/4.6.1"
ignoring duplicate directory "c:/dev/mingw/lib/gcc/../../lib/gcc/i686-pc-mingw32/4.6.1/../../../../include/c++/4.6.1/i686-pc-mingw32"
ignoring duplicate directory "c:/dev/mingw/lib/gcc/../../lib/gcc/i686-pc-mingw32/4.6.1/../../../../include/c++/4.6.1/backward"
ignoring duplicate directory "c:/dev/mingw/lib/gcc/../../lib/gcc/i686-pc-mingw32/4.6.1/include"
ignoring nonexistent directory "c:/temp/gcc/dest/include"
ignoring nonexistent directory "/c/temp/gcc/dest/include"
ignoring duplicate directory "c:/dev/mingw/lib/gcc/../../lib/gcc/i686-pc-mingw32/4.6.1/include-fixed"
ignoring nonexistent directory "c:/dev/mingw/lib/gcc/../../lib/gcc/i686-pc-mingw32/4.6.1/../../../../i686-pc-mingw32/include"
ignoring nonexistent directory "/mingw/include"
#include "..." search starts here:
#include <...> search starts here:
c:\dev\mingw\bin\../lib/gcc/i686-pc-mingw32/4.6.1/../../../../include/c++/4.6.1
c:\dev\mingw\bin\../lib/gcc/i686-pc-mingw32/4.6.1/../../../../include/c++/4.6.1/i686-pc-mingw32
c:\dev\mingw\bin\../lib/gcc/i686-pc-mingw32/4.6.1/../../../../include/c++/4.6.1/backward
c:\dev\mingw\bin\../lib/gcc/i686-pc-mingw32/4.6.1/include
c:\dev\mingw\bin\../lib/gcc/i686-pc-mingw32/4.6.1/../../../../include
c:\dev\mingw\bin\../lib/gcc/i686-pc-mingw32/4.6.1/include-fixed
End of search list.
GNU C++ (GCC) version 4.6.1 (i686-pc-mingw32)
compiled by GNU C version 4.6.1, GMP version 5.0.2, MPFR version 3.0.1-p4, MPC version 0.9
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
This works fine for me using -lboost_regex passed on the command line (mingw-7.2.exe distribution from nuwen.net - freshly unpacked with nothing else done to the distribution - which contains the compiler and boost versions you mentioned).
Try passing the option -Wl,--verbose to have the gnu ld linker be verbose about where it's looking for the libraries - that might give you a clue. Maybe some hidden option/environment setting is causing the wrong libboost_regex.a to be picked up?
Another thing to try is to pass the full path and filename for the library as an input file to g++ (with no options) - GCC will figure out that it's a library file (and a lib directory search will not be done for it). So assuming that you have MinGW installed in C:\dev\Mingw, the command line should look like:
g++ -o test -LC:\dev\MinGW testBoost.cpp c:\dev\MinGW\lib\libboost_regex.a
If that works, then you have a problem with the wrong library being found, and you need to fix your build script/build configuration or you'll continue to have problems down the road. If that still doesn't work, then the library might have been corrupted - try downloading and/or extracting the nuwen.net distribution again. Or try building the Boost libraries from scratch (which may take a while).
I have the following error when I try to compile my code in g+ compiler using eclipse
In function `ZSt19__iterator_categoryIPKSsENSt15iterator_traitsIT_E17iterator_categoryERKS3_':
C:/Program Files (x86)/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/stl_algobase.h:(.text$_ZN5boost11basic_regexIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE6assignEPKcS7_j[boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign(char const*, char const*, unsigned int)]+0x22): undefined reference to `boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::do_assign(char const*, char const*, unsigned int)'
collect2: ld returned 1 exit status
Build error occurred, build is stopped
All I have done is this statement
boost::regex re("\s+"); along with the header #inlucde
Could you kindly tell me how to proceed ?
It appears that you're not linking to the correct library. Most Boost libraries are header-only, so you don't need to do anything about them at link time. Boost::regex, however, is one of the few that requires that you link with a library along with giving the compiler the proper headers.
After you fix that, you'll want to re-check the escape in your string -- right now your passing "\s", which shouldn't be allowed (at a guess, you probably want "\s+" instead).