Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;链接失败,引用未定义到libboost_线程_C++_Multithreading_Gcc_Boost_Linker - Fatal编程技术网

C++ c++;链接失败,引用未定义到libboost_线程

C++ c++;链接失败,引用未定义到libboost_线程,c++,multithreading,gcc,boost,linker,C++,Multithreading,Gcc,Boost,Linker,刚刚开始使用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 referenc

刚刚开始使用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
g++-Wall-I/usr/include HelloWorld.cpp-L/usr/local/lib-pthread-lboost\u thread-lrt-lboost\u系统
/tmp/ccTKHnfd.o:在函数“main”中:
HelloWorld.cpp:(.text+0x4a):对“boost::thread::join()”的未定义引用
HelloWorld.cpp:(.text+0x5b):对“boost::thread::~thread()”的未定义引用
HelloWorld.cpp:(.text+0x70):对“boost::thread::~thread()”的未定义引用
/tmp/ccTKHnfd.o:在函数“boost::thread::thread(void(*)(),boost::disable_if::type)”中:
HelloWorld.cpp:(.text.\u zn5Boost6ThreadC2IPFvVeet\u NS\u 10disable\u ifINS\u 14is\u可转换EIRS4\u NS\u detail13 thread\u move\u tIS4\u eepens0\u 5dummyEE4typeE[\u zn5Boost6ThreadC5IPFvveet\u 10disable\u\u 14如果Is\u 14是可转换EIRS4\u 6detail13 thread\u移动\u eepens0\u 5dummyee4e]+0x23]:boost'thread::start的参考
collect2:ld返回了1个退出状态

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

您可能需要在lib标志中添加“-mt”后缀:例如-lboost\u thread-mt
您可以仔细检查boost库路径。

看起来您找不到libboost\u thread.so或libboost\u thread.a。 您的/usr/local/lib中实际上有什么?你能行

ls/usr/local/lib | grep线程
。如果您没有看到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/libboost_thread.so

如果找不到库,则只有两个原因:1)缺少到库的路径;2) 库名称不正确。两者都勾选,你就会成功。boost_线程真的存在于/usr/local/lib中吗?