【问题标题】:linking failed with undefined reference to libboost_thread链接失败,未定义对 libboost_thread 的引用
【发布时间】:2016-07-12 05:17:03
【问题描述】:

我正在编译一个开源项目以在我的机器上运行,它是this project。它需要 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

This answer 似乎解决了我的问题,但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

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

【问题讨论】:

  • 这些函数都是内联的,并在 boost headers 中定义。您的系统上似乎有多个版本的 boost 库。你也有这些库对应的头文件版本吗?
  • @n.m.你能告诉我如何检查我是否有与库对应的正确标题版本吗?其实我不太明白你的意思。标头版本应该与库匹配吗?
  • #include "boost/version.hpp" 并打印 BOOST_VERSION。
  • @n.m.我发现当前版本的 boost 是 1_49 而不是 1_55 所以你的假设是正确的。那么,如何将标头版本从 1.44 更改为 1.55?
  • 我按照这些说明link 使用“BOOST_LIB_VERSION”打印标题版本。

标签: c++ boost compiler-errors linker


【解决方案1】:

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

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

【讨论】:

  • 感谢您给我答复。不幸的是,它不起作用.. $ export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH<br/> $ echo $LD_LIBRARY_PATH<br/> /usr/local/lib:
    $make`
    但它会发出相同的错误消息。
【解决方案2】:

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

【讨论】:

  • 谢谢,我想它也安装了,因为 /usr/include/boost/thread 目录下有 50 多个文件。
猜你喜欢
  • 1970-01-01
  • 2011-10-03
  • 2017-08-11
  • 1970-01-01
  • 2014-08-20
  • 1970-01-01
  • 1970-01-01
  • 2019-02-19
  • 2023-02-14
相关资源
最近更新 更多