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

c++ linking failed with undefined reference to libboost_thread

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

刚刚开始使用boost线程进行多线程处理;我有一个Hello World类型的程序,它在链接到线程库时失败。以下是终端窗口输出:

 g++ -Wall -I/usr/include HelloWorld.cpp -L/usr/local/lib -pthread -lboost_thread -lrt -lboost_system
/tmp/ccTKHnfd.o: In function `main':
HelloWorld.cpp:(.text+0x4a): undefined reference to `boost::thread::join()'
HelloWorld.cpp:(.text+0x5b): undefined reference to `boost::thread::~thread()'
HelloWorld.cpp:(.text+0x70): undefined reference to `boost::thread::~thread()'
/tmp/ccTKHnfd.o: In function `boost::thread::thread<void (*)()>(void (*)(), boost::disable_if<boost::is_convertible<void (*&)(), boost::detail::thread_move_t<void (*)()> >, boost::thread::dummy*>::type)':
HelloWorld.cpp: (.text._ZN5boost6threadC2IPFvvEEET_NS_10disable_ifINS_14is_convertibleIRS4_NS_6detail13thread_move_tIS4_EEEEPNS0_5dummyEE4typeE[_ZN5boost6threadC5IPFvvEEET_NS_10disable_ifINS_14is_convertibleIRS4_NS_6detail13thread_move_tIS4_EEEEPNS0_5dummyEE4typeE]+0x23): undefined reference to `boost::thread::start_thread()'
collect2: ld returned 1 exit status

我使用智能安装了boost-dev库1.48,相信我为编译器使用了所有正确的标志。我错过了什么?我的gcc是4.6.3。提前感谢您的帮助

您可能需要在lib标志后面加上"-mt"后缀:例如-lbost_thread-mt你可以仔细检查你的提升库路径。

看起来找不到libboost_thread.so或libboost_thread.a。您的/usr/local/lib中到底有什么?你可以做

CCD_ 1。如果您没有看到libboost_thread.so或libboost_thread.a,那么这就解释了为什么您有未定义的引用——实现这些函数的对象实际上并不存在。

此外,如果您没有看到libboost_thread.so,但看到了libboost_thread.so.3.6或其他东西(表示特定版本),那么您可以做两件事之一:直接链接到它,或者创建一个符号链接(即sudo ln -s /usr/local/lib/libboost_thread.so.3.6 /usr/local/lib/libboost_thread.so