【问题标题】:Can't link boost logging code无法链接提升日志记录代码
【发布时间】: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 版本,但出现了同样的错误。我已更新问题以反映这一点。

标签: c++ linux boost


【解决方案1】:

尝试链接-lboost_thread,

和将-DBOOST_LOG_DYN_LINK更改为-DBOOST_ALL_DYN_LINK。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多