链接失败,未定义对libboost_thread的引用
linking failed with undefined reference to libboost_thread
我正在编译一个开源项目,以便在我的机器上运行,即这个项目。它需要 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 下载头文件。
相关文章:
- 将对象数组的引用传递给函数
- 什么时候在C++中返回常量引用是个好主意
- 对 'std::thread::_M_start_thread CMake 的未定义引用进行基准测试
- std::thread 增加 DLL 引用计数,从而防止卸载 DLL
- 为什么我们不允许将纯引用参数传递给 std::thread,但允许传递原始指针?
- 如果容器不是调用函数中的引用,则使用 std::thread 传递对迭代器的引用将失败
- 创建RSA_PrivateKey时对"std::thread::_State::~_State()"的未定义引用
- 将回调函数中对对象的引用传递给 std::thread
- 将基类的引用传递给 boost::thread 并在派生类中调用虚函数是否有效
- 错误 C2280:'std::thread::thread(const std::thread &)':尝试引用已删除的函数
- 在 Ubuntu 14.04 上使用 boost 编译:未定义对 'boost::thread::get_id() const' 的引用
- 我可以将数组每次移动引用传递给 std::thread 吗?
- 如何创建带有引用的函数指针的 std::thread
- std::thread constructor传递指针和通过引用传递有区别吗
- 未定义对在mingw64上使用boost.thread的InterlockedCompareExchange的引用(但不
- 通过引用C++11中的std::thread来传递对象
- 为什么我不能使用 std::thread 通过引用发送对象
- 未定义对`boost::thread的引用
- 为什么std::thread通过转发引用接受一个函子
- 获取对 std::thread::_M_start_thread 的未定义引用