c++链接失败,未定义对libboost_thread的引用
c++ linking failed with undefined reference to libboost_thread
刚刚开始使用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
)
相关文章:
- 将对象数组的引用传递给函数
- 什么时候在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 的未定义引用