【问题标题】:pthread library inclusion at (linking?) step在(链接?)步骤中包含 pthread 库
【发布时间】: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 在哪里寻找库,这可能会帮助你弄清楚为什么它没有找到它。有关详细信息,请参阅stackoverflow.com/a/11481258/12711

标签: g++ pthreads


【解决方案1】:

为了使用-lpthread,您需要一个libpthread.a 库存档,这是用于静态链接的。 libpthread.so.0 是一个共享对象,这意味着它用于动态链接。见GCC Link Options

【讨论】:

  • -l 也用于动态链接。你的解释不正确。
  • 好的。不知道 gcc 现在足够聪明,可以尝试许多文件变体 liblibname.aliblibname.solibname.a、... 用于链接选项 -llibname
  • 这种情况几乎一直存在。这不是什么新鲜事。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-17
  • 2019-05-23
  • 1970-01-01
  • 1970-01-01
  • 2016-06-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多