在(链接?)步骤中包含 pthread 库
Posted
技术标签:
【中文标题】在(链接?)步骤中包含 pthread 库【英文标题】:pthread library inclusion at (linking?) step 【发布时间】:2012-10-15 05:07:19 【问题描述】:我正在尝试编译提供给我的程序。我注意到在 Makefile 它运行命令
g++ -o test [...] -lpthread
我注意到 pthread 库文件在 /lib/libpthread.so.0 中,但是当我尝试创建目标时,它给了我这个错误:
/usr/bin/ld: cannot find -lpthread
collect2: ld returned 1 exit status
我该如何解决这个问题?
【问题讨论】:
可能无法解决您的问题,但您应该使用-pthread
而不是-lpthread
。
-Wl,--verbose
选项会告诉你 GCC 在哪里寻找库,这可能会帮助你弄清楚为什么它没有找到它。有关详细信息,请参阅***.com/a/11481258/12711。
【参考方案1】:
为了使用-lpthread
,您需要一个libpthread.a
库存档,这是用于静态链接的。 libpthread.so.0
是一个共享对象,这意味着它用于动态链接。见GCC Link Options
【讨论】:
-l
也用于动态链接。你的解释不正确。
好的。不知道 gcc 现在足够聪明,可以尝试许多文件变体 liblibname.a
、liblibname.so
、libname.a
、... 用于链接选项 -llibname
这种情况几乎一直存在。这不是什么新鲜事。以上是关于在(链接?)步骤中包含 pthread 库的主要内容,如果未能解决你的问题,请参考以下文章