Benedikt Benedikt - 1 month ago 23
Linux Question

Boost.Log linking errors under GNU/Linux

I would like to test the Boost.Log library. Unfortunately, I get link errors.

I use Arch Linux, and I installed Boost headers and libraries via built-in package manager

pacman
:


  • boost 1.54.0-3

  • boost-libs 1.54.0-2



When compiling the simple example from official site via
g++ log.cpp -lboost_log -lpthread
, I get the following errors:

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()'
...


I've read Why my application fails to link with Boost.Log?, but I couldn't solve the link errors. It only gives me the hint that the library where
boost::log::v2s_mt_posix::trivial::logger::get()
is in was linked statically. But under directory
/usr/lib/
there are only dynamically linked Boost libraries with extension
.so
.

Maybe, someone has a clue what's going wrong here.

Thank you.

Answer

You need to define BOOST_LOG_DYN_LINK:

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