c++ - Boost.Log GNU/Linux 下的链接错误

标签 c++ linux boost

我想测试 Boost.Log 库。不幸的是,我收到链接错误。

我使用 Arch Linux,并通过内置的包管理器 pacman 安装了 Boost 头文件和库:

  • boost 1.54.0-3
  • boost-libs 1.54.0-2

编译来自 official site 的简单示例时通过 g++ log.cpp -lboost_log -lpthread,我得到以下错误:

log.cpp:(.text+0x42): undefined reference to `boost::log::v2s_mt_posix::trivial::logger::get()'
log.cpp:(.text+0x9b): undefined reference to `boost::log::v2s_mt_posix::trivial::logger::get()'
...

我读过 Why my application fails to link with Boost.Log? ,但我无法解决链接错误。它只给我提示,boost::log::v2s_mt_posix::trivial::logger::get() 所在的库是静态链接的。但是在目录/usr/lib/ 下只有扩展名为.so 的动态链接的Boost 库。

也许,有人知道这里出了什么问题。

谢谢。

最佳答案

你需要定义BOOST_LOG_DYN_LINK :

g++ -DBOOST_LOG_DYN_LINK blog.cpp -lboost_log -lpthread

关于c++ - Boost.Log GNU/Linux 下的链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18419003/

相关文章:

c++ - 如何将接口(interface)指针传递给线程?

c - 将预编译的应用程序嵌入另一个 C 程序中

linux - 查找与软件相关的文件

c++ - 有人曾经将 boost::singleton 与 boost::logger 一起使用过吗?

c++ - 如何删除 "NSBundle may not respond to ' -pathForResource :ofType' "warning

c++ - 使用互斥体锁定 vector - Boost

c++ - 在 32 位 gdb 工具上调试 64 位 C++ 应用程序

linux - 将多个文件名扩展到 bash 中的一个目录中

c++ - 如何使用 boost::spirit 将文本解析为结构?

c++ - boost::多精度::数字