乐趣区

关于centos7:centos-76-libstdcso6-软链接库升级

                         
背景: 武汉某野人我的项目须要近程近程反对, 施行现场部署的时候忽然报了这么一个错

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

原先是在 SUSE12 和 EulerOS2.9 的机器上演练过数次, 客户临阵换枪, 给了一台 centos7.6 的 mini 版本的机器, 导致部署在下面的人脸识别的 sdk 包启动间接 原地爆炸, 霎时腾飞, 灵魂出窍, 神游天外, 投胎转世......

百度了一下形形色色的起因都有

  1. gcc 版本过低, 倡议降级(没尝试过)
  2. centos7 自带的 gcc 版本是 4.8, 通过 gcc 官网装置手册可知,依赖文件太多了,手动降级装置太繁琐。能够通过装置 devtoolset 的形式间接降级 gcc 至高版本(内网环境, 不可行)

本地模仿现场环境, 下载了 centos7.6

将另外一台机器上的 libmvec.so 复制到指标机器的 /usr/lib64/ 门路下

报错:

[root@centosb aw_kunpeng_sdk.v3.11.1]# ./attendance: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by ./attendance)
./attendance: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./attendance)
./attendance: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /data01/aw_kunpeng_sdk.v3.11.1/libawface.so)
./attendance: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /data01/aw_kunpeng_sdk.v3.11.1/libawface.so)
./attendance: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /data01/aw_kunpeng_sdk.v3.11.1/libawface.so)

报错信息解析:

呈现这个谬误是因为 CentOS7 以后版本默认的 GCC 的版本太老,外面的动态链接库没有 GLIBCXX_3.4.21

执行命令

strings /usr/lib64/libstdc++.so.6 | grep GLIBC

能够看到报错的动静库链接缺失

cd /usr/local/lib64/
# 下载最新版本的 ` 下载最新版本的 libstdc.so_.6.0.26`
wget http://www.vuln.cn/wp-content/uploads/2019/08/libstdc.so_.6.0.26.zip
# 解压
unzip libstdc.so_.6.0.26.zip
# 将下载的最新版本拷贝到 /usr/lib64
cp libstdc++.so.6.0.26 /usr/lib64
cd  /usr/lib64
# 查看 /usr/lib64 下 libstdc++.so.6 链接的版本
ls -l | grep libstdc++
# 删除原先的软连贯(不释怀能够备份)
rm libstdc++.so.6
# 应用最新的库建设软连贯
ln -s libstdc++.so.6.0.26 libstdc++.so.6
# 查看新版本,胜利
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
退出移动版