共享库具有不同的名称

时间:2016-02-19 07:13:25

标签: unix shared-libraries

我用gcc使用openssl加密库编译了我的程序。 我将可执行文件移动到另一个系统,安装openssl后尝试运行它。我收到以下错误:

error while loading shared libraries: libcrypto.so.1.0.0: cannot open shared object file: No such file or directory

我从以下的库中了解到存在的库,但有另一个名称:

locate libcrypto
/usr/lib64/.libcrypto.so.1.0.2f.hmac
/usr/lib64/.libcrypto.so.10.hmac
/usr/lib64/libcrypto.so
/usr/lib64/libcrypto.so.1.0.2f
/usr/lib64/libcrypto.so.10
/usr/lib64/pkgconfig/libcrypto.pc

我可以告诉二进制文件使用现有的库吗?或者有没有办法安装所需的那个?

汇编是在Ubuntu 15.10 64位上完成的,试图在Fedora 4.2.3-300.fc23.x86_64上运行。

1 个答案:

答案 0 :(得分:1)

  

我可以以某种方式告诉二进制文件使用现有的库吗?

不,你不能:原因这些库有不同的名称:它们不是ABI兼容的。如果你设法以某种方式告诉二进制文件使用另一个库,如果你运气好,结果将是崩溃,如果你不幸,结果将是一个无声的腐败。

(顺便说一下,你可以通过创建符号链接ln -s libcrypto.so.1.0.2f libcrypto.so.1.0.0来尝试这一点,但是你已经警告这样做了)。

  

有没有办法安装所需的?

当然:你应该可以将libcrypto.so.1.0.0从Ubuntu机器复制到Fedora,假设你找不到提供它的Fedora软件包。