Linux 为什么有时链接到.so文件会导致链接器错误?

Linux 为什么有时链接到.so文件会导致链接器错误?,linux,shared-libraries,shared-objects,Linux,Shared Libraries,Shared Objects,有时我对这个问题太好奇了。所以链接失败了,但每当我使用静态libs(.a)时,它就不会。有人知道吗 例如,在linux中,我使用了libcrypto.lib,它在每次编译时都是正常的。但是libcrypto.so是如此的不一致。这其中的根本原因是什么 它显示的错误是:ld:libcrypto.so文件格式错误确定。解决了。你是对的@n.m.你的评论对我很有用 你的专家错了。不一致行为的原因可能是硬件损坏。尝试运行memtest86和文件系统通常使用的任何磁盘检查实用程序n、 m 谢谢。除非你给出

有时我对这个问题太好奇了。所以链接失败了,但每当我使用静态libs(.a)时,它就不会。有人知道吗

例如,在linux中,我使用了libcrypto.lib,它在每次编译时都是正常的。但是libcrypto.so是如此的不一致。这其中的根本原因是什么


它显示的错误是:
ld:libcrypto.so文件格式错误

确定。解决了。你是对的@n.m.你的评论对我很有用


你的专家错了。不一致行为的原因可能是硬件损坏。尝试运行memtest86和文件系统通常使用的任何磁盘检查实用程序n、 m


谢谢。

除非你给出一个准确而具体的例子,否则我们无法猜测。回想一下,
gcc
(实际上是底层的
ld
链接器)的参数顺序很重要。它说
ld:libcrypto.so使用错误的文件格式
,然后尝试
file-L/usr/lib/libcrypto.so
file-L/usr/lib/x86_64-linux-gnu/libcrypto.so
找出你的
libcrypto.so
;在我的Debian/Sid/x86-64上,我得到了ELF 64位LSB共享对象x86-64。。。您可能希望重新安装提供该软件包的软件包(
libssl dev
在my Debian上),并且
visual-c++
标记在您的问题中是错误的。您的专家是错误的。不一致行为的原因可能是硬件损坏。尝试运行
memtest86
和文件系统通常使用的任何磁盘检查实用程序。