在GNU/Linux下,Boost.Log链接错误

13

我想测试Boost.Log库,但很遗憾我遇到了链接错误。

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

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

当我按照官方网站上的简单示例编译 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()'
...

我已经阅读了为什么我的应用程序无法与Boost.Log链接?,但是我无法解决链接错误。它只给了我一个提示,即 boost::log::v2s_mt_posix::trivial::logger::get() 所在的库被静态链接了。但在目录/usr/lib/下只有扩展名为.so的动态链接Boost库。

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

谢谢。


可能是链接错误,连接Boost日志教程(未定义的引用)的重复问题。 - Trevor Boyd Smith
2个回答

16

你需要定义BOOST_LOG_DYN_LINK

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

0
如果您正在使用cmake,则:
find_package(Boost REQUIRED COMPONENTS system log)
target_link_libraries(credential ${Boost_SYSTEM_LIBRARY} ${Boost_LOG_LIBRARY})

并使用:

#define BOOST_LOG_DYN_LINK 1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接