【发布时间】:2016-06-13 21:04:39
【问题描述】:
这似乎与此问题相同:
boost_log example with sinks fails to compile
但是,添加-lpthread 似乎没有任何效果。这是我用来编译的完整命令行:
/usr/bin/c++ -g
拓扑/测试/CMakeFiles/topologyTest.dir/main.cpp.o 拓扑/测试/CMakeFiles/topologyTest.dir/configTests.cpp.o -o 拓扑/测试/拓扑测试 -rdynamic -lboost_log -lboost_log_setup -lboost_thread -lboost_program_options -lboost_serialization -lboost_unit_test_framework -lboost_filesystem -lboost_system -lboost_date_time -lboost_regex -lboost_chrono -lboost_atomic -lpthread topology/lib/libtopologyLib.a topology/testLib/libtopologyTestLib.a 实用程序/testLib/libutilityTestLib.a 拓扑/lib/libtopologyLib.a -lpthread -lboost_log -lboost_log_setup -lboost_thread -lboost_program_options -lboost_serialization -lboost_unit_test_framework -lboost_filesystem -lboost_system -lboost_date_time -lboost_regex -lboost_chrono -lboost_atomic -lpthread expression/lib/libexpressionLib.a utility/lib/libutilityLib.a
我也尝试使用定制的 1.60 版本的 boost;
/usr/bin/g++ -g
拓扑/测试/CMakeFiles/topologyTest.dir/activatorTests.cpp.o 拓扑/测试/CMakeFiles/topologyTest.dir/main.cpp.o 拓扑/测试/CMakeFiles/topologyTest.dir/neuronTests.cpp.o 拓扑/测试/CMakeFiles/topologyTest.dir/speciesTests.cpp.o 拓扑/测试/CMakeFiles/topologyTest.dir/synapseTests.cpp.o -o 拓扑/测试/拓扑测试 -rdynamic -lpthread /usr/local/lib/libboost_log.so /usr/local/lib/libboost_log_setup.so /usr/local/lib/libboost_serialization.so /usr/local/lib/libboost_system.so /usr/local/lib/libboost_thread.so /usr/local/lib/libboost_unit_test_framework.so /usr/local/lib/libboost_date_time.so /usr/local/lib/libboost_filesystem.so /usr/local/lib/libboost_regex.so /usr/local/lib/libboost_chrono.so /usr/local/lib/libboost_atomic.so -lpthread 拓扑/lib/libtopologyLib.a 拓扑/testLib/libtopologyTestLib.a 实用程序/testLib/libutilityTestLib.a 拓扑/lib/libtopologyLib.a -lpthread /usr/local/lib/libboost_log.so /usr/local/lib/libboost_log_setup.so /usr/local/lib/libboost_serialization.so /usr/local/lib/libboost_system.so /usr/local/lib/libboost_thread.so /usr/local/lib/libboost_unit_test_framework.so /usr/local/lib/libboost_date_time.so /usr/local/lib/libboost_filesystem.so /usr/local/lib/libboost_regex.so /usr/local/lib/libboost_chrono.so /usr/local/lib/libboost_atomic.so -lpthread 表达式/lib/libexpressionLib.a 实用程序/lib/libutilityLib.a -Wl,-rpath,/usr/local/lib
在这两种情况下,我得到的错误是:
/usr/bin/ld: /usr/local/lib/libboost_log.so: 未定义的引用 符号'_ZN5boost6detail12get_tss_dataEPKv' /usr/local/lib/libboost_thread.so:添加符号时出错:缺少 DSO 从命令行 collect2:错误:ld 返回 1 退出状态
我尝试将-DBOOST_LOG_DYN_LINK 附加到命令中,但没有效果。
我正在使用ubuntu 16.04。
我有点不知所措。任何想法我错过了什么/如何诊断?
【问题讨论】:
-
链接问题中的解决方案是添加
-lboost_thread。这有什么改变吗? -
@SeanCline
boost_thread已被链接。我也尝试过使用 ubuntu 的原生 1.58 boost 版本,但出现了同样的错误。我已更新问题以反映这一点。