链接失败,未定义对libboost_thread的引用

linking failed with undefined reference to libboost_thread

本文关键字:thread 引用 libboost 失败 未定义 链接      更新时间:2023-10-16

我正在编译一个开源项目,以便在我的机器上运行,即这个项目。它需要 boost 库,所以我在我的 ubuntu 机器上安装了 Boost_1_55 库,但编译过程没有通过打印出一些错误消息成功完成

,如下所示。
libtool: link: g++ -g -O3 -Wall -DKENLM_MAX_ORDER=6 -W -Wall -Wno-sign-compare -I./.. -pthread -I/usr/include -g -O2 -o .libs/query query_main.o  ./.libs/libklm.so ../util/.libs/libklm_util.so -lz -L/usr/lib/x86_64-linux-gnu -lboost_program_options -lboost_thread -lboost_system -lpthread -lrt -pthread
../util/.libs/libklm_util.so: undefined reference to `boost::thread::join()'
../util/.libs/libklm_util.so: undefined reference to `boost::thread::~thread()'
./.libs/libklm.so: undefined reference to `boost::thread::start_thread()'
collect2: ld returned 1 exit status

这个答案似乎是我问题的解决方案,但ls -al /usr/local/lib | grep thread的结果如下所示。

libboost_thread.a
libboost_thread.so -> libboost_thread.so.1.55.0
libboost_thread.so.1.49.0
libboost_thread.so.1.55.0

我不知道还有什么要检查的。提前感谢您的帮助。

您可以尝试像这样将/usr/local/lib添加到LD_LIBRARY_PATH

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

你有静态的 Boost 库对象 (libboost_thread.so),但你安装了 Boost 开发文件吗?检查/usr/include/boost/thread 目录是否存在,并且其中是否有 *.hpp 文件。如果没有,您可能需要为您的发行版安装 libboost-thread-dev 包或直接从 Boost.org 下载头文件。