解决libstdc、libcrypto、libssl等so文件版本依赖问题

最近在一台centos7(amd64)服务器上调用一个底层库时,分别遇到了以下几个错误,在此记录下解决方法

/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21’ not found

/lib64/libcrypto.so.1.0.0: version `OPENSSL_1.0.0’ not found

libssl.so.1.0.0: cannot open shared object file: No such file or directory

/lib64/libssl.so.1.0.0: symbol SHA256_Transform, version OPENSSL_1.0.2 not defined in file libcrypto.so.1.0.0 with link time reference

方法有很多,可以源码编译安装、或者编译后提取需要的so文件
我这里方法是从deb包中解压出需要的so文件,替换到系统目录

首先用strings命令查看版本确实不存在

strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX_3
strings /usr/lib64/libcrypto.so.1.0.0 | grep OPENSSL_1

先解决第一个libstdc++.so.6,步骤如下:
这个是包含在gcc里的,首先可以考虑更新gcc版本来解决
下面步骤是仅提取so文件的方法(可能会缺少别的依赖so文件)

# 新建个目录进入
mkdir /tmp/libstdc
cd /tmp/libstdc
# 下载一个高版本gcc中的deb包,这里选了gcc8
wget http://mirrors.tuna.tsinghua.edu.cn/ubuntu/pool/main/g/gcc-8/libstdc++6_8.4.0-1ubuntu1~18.04_amd64.deb
# 解压deb
ar x libstdc++6_8.4.0-1ubuntu1~18.04_amd64.deb
# 解压其中的data.tar.xz
tar xvf data.tar.xz
# 确认解压出的libstdc++.so.6.0.25包含需要版本
strings ./usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25 |grep GLIBCXX_3.4.21
# 复制到系统目录
cp ./usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25 /usr/lib64/
# 更新libstdc++.so.6软链
ln -snf /usr/lib64/libstdc++.so.6.0.25 /usr/lib64/libstdc++.so.6

同理,解决libcrypto.so、libssl.so步骤如下:

# 新建个目录进入
mkdir /tmp/libssl
cd /tmp/libssl
# 下载libssl1.0.0_1.0.2n的deb包
wget  http://mirrors.tuna.tsinghua.edu.cn/ubuntu/pool/main/o/openssl1.0/libssl1.0.0_1.0.2n-1ubuntu5.11_amd64.deb
# 解压
ar x libssl1.0.0_1.0.2n-1ubuntu5.11_amd64.deb
# 解压其中的data.tar.xz
tar xvf data.tar.xz
# 复制需要的so文件到系统目录
cp usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 /usr/lib64/
cp usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 /usr/lib64/

如果是debian或ubuntu,可以直接安装deb包

sudo dpkg -i  libssl1.0.0_1.0.2n-1ubuntu5.11_amd64.deb
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值