背景:武汉的一个野蛮项目需要异地远程支持。实施现场部署时,在加载共享库时突然报这样的错误error:libmvec.so.1:cannotopensharedobjectfile:NosuchfileordirectorywasoriginallyinSUSE12andEulerOS2.9machine排练了几次次。客户战前换枪,送了一台centos7.6mini版的机器。结果部署在上面的人脸识别sdk包当场炸开,瞬间起飞。出体、游荡天际、转世……百度搜了各种原因,都有gcc版本太低,建议升级(没试过)centos7自带的gcc版本是4.8,通过gcc官网的安装手册,我们可以看到,依赖文件太多,手动升级安装太麻烦。可以通过在本地安装devtoolset模拟现场环境,间接升级gcc到更高版本(内网环境,不可行),下载centos7.6,将另一台机器上的libmvec.so复制到/usr/lib64/路径下targetmachine报如下错误:[root@centosbaw_kunpeng_sdk.v3.11.1]#./attendance:/lib64/libstdc++.so.6:version`CXXABI_1.3.8'notfound(requiredby./attendance)./attendance:/lib64/libstdc++.so.6:找不到版本“GLIBCXX_3.4.21”(./attendance要求)。/attendance:/lib64/libstdc++.so.6:找不到版本“CXXABI_1.3.8”(/要求)data01/aw_kunpeng_sdk.v3.11.1/libawface.so)./attendance:/lib64/libstdc++.so.6:未找到版本“GLIBCXX_3.4.21”(/data01/aw_kunpeng_sdk.v3.11.1/libawface.so需要)。/出席:/lib64/libstdc++.so.6:version`GLIBCXX_3.4.20'notfound(requiredby/data01/aw_kunpeng_sdk.v3.11.1/libawface.so)报错信息分析:出现这个错误是因为当前版本的CentOS7默认的GCC版本太老了,里面的动态链接库没有GLIBCXX_3.4.21执行命令strings/usr/lib64/libstdc++.so.6|grepGLIBC,可以看到错误的missingdynamiclibrarylink解决方法如下cd/usr/local/lib64/#DownloadthelatestVersion`下载最新版本的libstdc.so_.6.0.26`wgethttp:///www.vuln.cn/wp-content/uploads/2019/08/libstdc.so_.6.0.26.zip#解压解压libstdc。so_.6.0.26.zip#复制最新下载的版本到/usr/lib64cplibstdc++.so.6.0.26/usr/lib64cd/usr/lib64#查看/usr/lib64下libstdc++.so.6链接的版本ls-l|greplibstdc++#删除原来的软链接(不放心可以备份)rmlibstdc++.so.6#使用最新的库创建软链接ln-slibstdc++.so.6.0.26libstdc++.so.6#查看新版本,成功strings/usr/lib64/libstdc++.so.6|grepGLIBCXX
