搜索 /lib/libpthread.so.0 时跳过不兼容的 /lib/libpthread.so.0

Posted

技术标签:

【中文标题】搜索 /lib/libpthread.so.0 时跳过不兼容的 /lib/libpthread.so.0【英文标题】:skipping incompatible /lib/libpthread.so.0 when searching for /lib/libpthread.so.0 【发布时间】:2020-12-14 17:30:48 【问题描述】:

我正在构建一个程序并尝试构建 cmake 文件。我正在使用一个 conda 环境,我安装了一个新的 gcc 和 cmake,因为系统没有它,但是我得到了这个错误。

 /usr/bin/ld: skipping incompatible /lib/libpthread.so.0 when searching for /lib/libpthread.so.0 
 /usr/bin/ld: cannot find /lib/libpthread.so.0
 /usr/bin/ld: skipping incompatible /usr/lib/libpthread_nonshared.a when searching for/usr/lib/libpthread_nonshared.a
 /usr/bin/ld: cannot find /usr/lib/libpthread_nonshared.a 
 collect2: error: ld returned 1 exit status

【问题讨论】:

你能介绍一下目标架构吗?命令file /lib/libpthread.so.0的输出是什么? 它是 x86_64,命令说 /lib/libpthread.so.0: symbolic link to `libpthread-2.17.so' 那么file /lib/libpthread-2.17.so ? /lib/libpthread-2.17.so:ELF 32 位 LSB 共享对象,Intel 80386,版本 1 (SYSV),动态链接(使用共享库),BuildID[sha1]=bc21c03f20b151a923a3689400386ba342322857,用于GNU/Linux 2.6.32,未剥离 仅供参考,库的版本似乎很旧,我有 libpthread-2.29。这没有问题。你可以在旧系统上做很多事情,但你有点靠自己。希望它不会太令人沮丧。 【参考方案1】:

在comment-communication中发现,编译目标和本地库的架构不匹配。

要么

安装 libpthread 的 64 位版本(= 架构 amd64 或 x86_64)

如果已安装(/lib64/libpthread.so.0 是否存在?),则 cmake 会找到错误的库。必须在某个地方为此设置一些设置

将 cmake 编译目标设置为 32 位(i368 / i586 / i686 编辑:在 gcc 中这与 -m32 一起使用)您生成的程序将在 所有 x86 系统上运行,因此 32 位和 64位[编辑:如果所有库都存在]!但是您的内存限制

【讨论】:

是的 /lib64/libpthread.so.0 确实存在于 /usr/local/lib64 下。 export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH 有帮助吗?我已经尝试过了,但是没有用。你知道可以做哪些改变吗? LD_LIBRARY_PATH 用于运行时。您想链接它,因此必须在链接时找到它。 cmake 调用 gcc。如果您有兴趣:See how gcc is controlled。但在我看来,你的 cmake 似乎走错了路。我不是 cmake 专家,但我知道有一些有用的工具,甚至是 GUI 工具。有时从干净的代码开始,export LDFLAGS=-L/usr/local/lib64,然后构建,例如。 G。 automakeautoconf./configuremakecmake

以上是关于搜索 /lib/libpthread.so.0 时跳过不兼容的 /lib/libpthread.so.0的主要内容,如果未能解决你的问题,请参考以下文章

在(链接?)步骤中包含 pthread 库

百度搜索按回车时有“咚”的一声

Swift Navigationbar 搜索栏在单击时关闭搜索文本

带有搜索图标的 UINavigationBar - 单击时推送模态搜索视图

iOS UITableView 搜索时不重新加载数据

如何在下次搜索时删除以前搜索过的项目