简体   繁体   English

Boost.org提供的Boost Log 1.65.0示例的链接错误

[英]Linkage error with Boost Log 1.65.0 example from the Boost.org

I tried to build this example and got a linkage error: 我试图构建此示例 ,但出现链接错误:

hekto@ubuntu:~$ g++ -g -Wall -std=c++11 -pthread -DBOOST_LOG_DYN_LINK  -pthread sample.cpp -o sample -lboost_log -lboost_thread -lboost_system
/tmp/cc2EUizv.o: In function `boost::log::v2_mt_posix::basic_formatter<char> boost::log::v2_mt_posix::parse_formatter<char>(char const*)':
/usr/include/boost/log/utility/setup/formatter_parser.hpp:207: undefined reference to `boost::log::v2_mt_posix::basic_formatter<char> boost::log::v2_mt_posix::parse_formatter<char>(char const*, char const*)'
collect2: error: ld returned 1 exit status

How to overcome that? 如何克服呢?

I'm answering my own question, following the @Praetorian help and suggestion. 在@Praetorian的帮助和建议之后,我正在回答自己的问题。

The Boost Log relies on two libraries (I thought it was only one): Boost Log依赖于两个库(我认为它只是一个):

hekto@ubuntu:~$ ls -l /usr/lib/x86_64-linux-gnu/libboost_log*
-rw-r--r-- 1 root root 3510082 Mar  6  2018 /usr/lib/x86_64-linux-gnu/libboost_log.a
-rw-r--r-- 1 root root 2441460 Mar  6  2018 /usr/lib/x86_64-linux-gnu/libboost_log_setup.a
lrwxrwxrwx 1 root root      28 Mar  6  2018 /usr/lib/x86_64-linux-gnu/libboost_log_setup.so -> libboost_log_setup.so.1.65.1
-rw-r--r-- 1 root root  671944 Mar  6  2018 /usr/lib/x86_64-linux-gnu/libboost_log_setup.so.1.65.1
lrwxrwxrwx 1 root root      22 Mar  6  2018 /usr/lib/x86_64-linux-gnu/libboost_log.so -> libboost_log.so.1.65.1
-rw-r--r-- 1 root root  905752 Mar  6  2018 /usr/lib/x86_64-linux-gnu/libboost_log.so.1.65.1

If you compile and link on Linux, you'll have to provide a list of Boost libraries on the command line. 如果在Linux上进行编译和链接,则必须在命令行上提供Boost库的列表。 According to an answer to this question, given by the main developer (@AndreySemashev) of the Boost Log , these libraries on the command line should look like this: 根据Boost Log的主要开发人员(@AndreySemashev)给出的对该问题的回答,命令行上的这些库应如下所示:

-lboost_log_setup -lboost_log

Probably it makes sense to provide two libraries instead of one (for example, when you link statically), but I couldn't find any recommendations about when we should use a single library, and when - both of them. 提供两个库而不是一个库可能是有意义的(例如,当您静态链接时),但是我找不到关于何时应该使用单个库以及何时使用这两个库的任何建议。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM