搜索 /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。 automake
、autoconf
、./configure
、make
或 cmake
。以上是关于搜索 /lib/libpthread.so.0 时跳过不兼容的 /lib/libpthread.so.0的主要内容,如果未能解决你的问题,请参考以下文章
Swift Navigationbar 搜索栏在单击时关闭搜索文本