centos 7.6 libstdc++.so.6 软链接库升级
at 2年前 ca Linux pv 3700 by touch
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
版权声明
本文仅代表作者观点,不代表码农殇立场。
本文系作者授权码农殇发表,未经许可,不得转载。
已有0条评论