共计 1567 个字符,预计需要花费 4 分钟才能阅读完成。
背景: 武汉某野人我的项目须要近程近程反对, 施行现场部署的时候忽然报了这么一个错
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 包启动间接 原地爆炸, 霎时腾飞, 灵魂出窍, 神游天外, 投胎转世......
百度了一下形形色色的起因都有
- gcc 版本过低, 倡议降级(没尝试过)
- 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
正文完