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


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

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

  • 提升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/ 只有动态链接的Boost库具有扩展名 .so

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

谢谢。


1764
2017-08-24 13:16


起源

可能重复 链接boost log教程时链接器错误(未定义的引用) - Trevor Boyd Smith


答案:


你需要定义 BOOST_LOG_DYN_LINK

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

13
2017-09-14 19:17



我在编译时尝试了-DBOOST_LOG_DYN_LINK,它可以工作。 - CCC


如果你正在使用 cmake 然后:

find_package(Boost REQUIRED COMPONENTS system log)
target_link_libraries(credential ${Boost_SYSTEM_LIBRARY} ${Boost_LOG_LIBRARY})

并使用:

#define BOOST_LOG_DYN_LINK 1

0
2017-10-13 08:34