我正在尝试使用cmake
编译程序,并且看到以下链接器错误:
/home/quant/bin/boost_1_61_0/stage/lib/libboost_log_setup.so: 未定义的引用
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 ::文件系统:: path_traits ::讯(升压::文件系统:: directory_entry const&amp;,std :: __ cxx11 :: basic_string, std :: allocator&gt;&amp;)&#39;
ninja
生成的链接器命令如下所示:
g ++ -pthread -DBOOST_ALL_DYN_LINK
实用程序/测试/ CMakeFiles / utilityTest.dir / loadCSVTests.cpp.o 实用程序/测试/ 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 实用/ 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,/家庭/定量/ bin中/ boost_1_61_0 /级/ lib中
正如您所看到的,我正在与boost_filesystem
和boost_system
进行关联,因此它与this SO post上引用的问题不同(以及许多其他类似问题)
我正在使用boost 1.61
,我使用gcc 5.3
编译(与我编译程序的编译器相同)。
我做错了什么?
答案 0 :(得分:2)
我有一个类似的问题,这可能是因为从gcc 5.1引入了一个新的ABI。
https://github.com/openframeworks/openFrameworks/issues/4203
我通过添加&#34; add_definitions(-D_GLIBCXX_USE_CXX11_ABI = 0)&#34;来修复我的。到CMakeLists.txt