在(链接?)步骤中包含 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.aliblibname.solibname.a、... 用于链接选项 -llibname 这种情况几乎一直存在。这不是什么新鲜事。

以上是关于在(链接?)步骤中包含 pthread 库的主要内容,如果未能解决你的问题,请参考以下文章

Debian下undefined reference to ‘pthread_create’问题解决

在 Xcode 静态库中包含框架?

如何在 gn 中包含共享库

如何在 C++ 窗口中包含第三方库?

在 netbeans 的静态库中包含静态库

在android studio的apk中包含.so库[重复]