报错
ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version
`CXXABI_1.3.9‘ not found
背景
开发的一个python预测程序(算法分析+应用服务),在原本的linux服务器下配置了开发环境,打包后在另一台凝思服务器解压,发现报错。
应该是linux系统之间存在差异,动态库缺失或者版本不对
。
解决方案
参考:
https://blog.csdn.net/bitcarmanlee/article/details/90242598
确认是否有对应版本:
cd /usr/lib/x86_64-linux-gnu
sudo strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep CXXABI
确认确实缺失CXXABI_对应版本后
查找最新动态库
sudo find / -name "libstdc++.so.6*"
出现很多结果如下
/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19-gdb.py
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
...
/home/leilei/anaconda2/pkgs/libstdcxx-ng-8.2.0-hdf63c60_1/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6
/home/leilei/anaconda2/pkgs/libstdcxx-ng-8.2.0-hdf63c60_1/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6.0.25
...
选择最新的(最下面的)进行复制(复制到/usr/lib/x86_64-linux-gnu):
cp /home/leilei/anaconda2/pkgs/libstdcxx-ng-8.2.0-hdf63c60_1/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6.0.25 /usr/lib/x86_64-linux-gnu/
先cd 进入/usr/lib/x86_64-linux-gnu
cd /usr/lib/x86_64-linux-gnu
删除原来的软连接
sudo rm -rf libstdc++.so.6
基于最新的动态库生成软连接
sudo ln -s libstdc++.so.6.0.25 libstdc++.so.6
查看现在的CXXABI
sudo strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep 'CXXABI'
总结
基本流程是:
检查缺陷——查询最新动态库并复制进软连接目录——删除原始软连接——基于最新动态库生成新的软链接——CXXABI随之安装到符合要求的版本
表象已经洞悉,但是其内在原理并不了解,但已经结局了报错,满足了开发需求。
标签:libstd,x86,lib,gnu,c++,64,linux From: https://blog.csdn.net/qq_43128256/article/details/137257243