背景:我在linux 服务器上使用curl 命令后报错了,看着这个错误是跟openssl 有关的,哎,只怪那些装机器的人太垃圾了,只能自己看看了
error while loading shared libraries: libcrypto.so.10: cannot open shared object file
原因是,/usr/lib64 下libssl.so.10缺失,或者链接版本不对。
缺失:
ll libssl.so*
-rwxr-xr-x 1 root root 520912 Jan 4 22:32 libssl.so.1.1
或者
版本不对:
ll libssl.so*
-rwxr-xr-x 1 root root 487784 Jan 5 14:00 libssl.so.1.0.1e
-rwxr-xr-x 1 root root 520912 Jan 4 22:32 libssl.so.1.1
解决方法:
方法1:openssl-1.0.1e 下载地址
https://www.openssl.org/source/old/1.0.1/openssl-1.0.1e.tar.gz
载完毕后解压,注意编译安装openssl需要c和prel环境。
通过./config shared zlib-dynamic 来生成Makefile文件。然后make生成
libssl.so.1.0.0
libcrypto.so.1.0.0
方法2:找个正常的机器,同版本的机器来拷贝,我就是这么干的,找了6.5 的linux 机器来,也是这两个文件 libssl.so.1.0.0 、libcrypto.so.1.0.0,后面操作步骤都一样了
下面是具体的操作步骤:
将得到的两个文件拷贝到 /usr/lib64
创建软链接(ln源就是上面查出的对应版本的库文件,这里注意了,ln -s 第一部分是实体文件,第二部分是虚拟的,我最开始就是搞错了,然后报错了):
cd /usr/lib64/
ln -s libssl.so.1.0.0 libssl.so.10
ln -s libcrypto.so.1.0.0 libcrypto.so.10
然后在/usr/lib64/ 下
ll libssl.so*
lrwxrwxrwx 1 root root 15 Jan 5 14:06 libssl.so.10 -> libssl.so.1.0.0
-rwxr-xr-x 1 root root 487784 Jan 5 14:00 libssl.so.1.0.0
-rwxr-xr-x 1 root root 520912 Jan 4 22:32 libssl.so.1.1