/usr/bin/ld: /tmp/ccXJ8LkP.o: in function `std::thread::thread<void (&)(int, char), int, char, void>(void (&)(int, char), int&&, char&&)': foo.cc:(.text._ZNSt6threadC2IRFvicEJicEvEEOT_DpOT0_[_ZNSt6threadC5IRFvicEJicEvEEOT_DpOT0_]+0x3d): undefined reference to `pthread_create' /usr/bin/ld: /tmp/ccXJ8LkP.o: in function `std::thread::thread<void (&)(int), int, void>(void (&)(int), int&&)': foo.cc:(.text._ZNSt6threadC2IRFviEJiEvEEOT_DpOT0_[_ZNSt6threadC5IRFviEJiEvEEOT_DpOT0_]+0x37): undefined reference to `pthread_create' collect2: error: ld returned 1 exit status
时间: 2024-04-13 19:30:52 浏览: 16
这个错误是由于缺少对 pthread 库的链接导致的。在使用线程库时,需要在编译时链接 pthread 库。可以通过在编译命令中添加 `-pthread` 参数来解决这个问题。
例如,将编译命令修改为:
```
g++ -pthread foo.cc -o foo
```
这样就可以正确链接 pthread 库,并解决 undefined reference 的错误。请确保在编译时添加了 `-pthread` 参数,并再次尝试运行程序。
相关问题
树莓派4bwiringpi库编译/usr/bin/ld: /tmp/ccq4SI3g.o:
我可以回答这个问题。树莓派4b的wiringpi库编译时出现了"/usr/bin/ld: /tmp/ccq4SI3g.o:"的错误提示,这是因为缺少了相关的库文件或者库文件路径不正确。需要检查库文件是否正确安装并且路径是否正确设置。可以尝试重新安装wiringpi库或者检查编译命令是否正确。
/usr/bin/ld : error : 找不到 -llibNVDSdk.so
这个错误的意思是编译器在链接程序时找不到名为"libNVDSdk.so"的库文件。你可以使用以下步骤来解决这个问题:
1. 确认该库文件是否存在。你可以使用以下命令来查找它:`sudo find / -name libNVDSdk.so`
2. 如果库文件存在,那么你需要将其路径添加到编译器的库路径中。你可以使用以下命令来设置库路径:
```
export LD_LIBRARY_PATH=/path/to/lib:$LD_LIBRARY_PATH
```
其中,`/path/to/lib`是你需要添加的库文件路径。
3. 如果库文件不存在,那么你需要安装它。你可以尝试使用以下命令来安装:
```
sudo apt-get update
sudo apt-get install libnvidia-container-tools
```
如果以上命令无法安装该库文件,那么你需要从其他渠道获取该库文件并手动安装。
希望这些步骤能够帮助你解决这个问题。