【问题标题】:c++ linking failed with undefined reference to libboost_threadc++ 链接失败,未定义对 libboost_thread 的引用
【发布时间】:2013-02-20 01:47:46
【问题描述】:

刚刚开始使用 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

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

【问题讨论】:

  • 如果找不到库,只能有两个原因:1)缺少库路径; 2) 库名不正确。检查两者,你会成功。 /usr/local/lib 中真的存在 boost_thread 吗?

标签: c++ multithreading gcc boost linker


【解决方案1】:

您可能需要将“-mt”后缀附加到 lib 标志:例如-lboost_thread-mt 您可以仔细检查您的 boost 库路径。

【讨论】:

    【解决方案2】:

    您似乎找不到 libboost_thread.so 或 libboost_thread.a。 /usr/local/lib 中实际有什么?你可以这样做

    ls /usr/local/lib | grep thread。如果您没有看到 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-03
      • 2017-08-11
      • 2013-04-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-20
      • 2019-02-04
      • 2011-04-03
      相关资源
      最近更新 更多