【bug解决】 ImportError: /lib64/libstdc++.so.6: version `CXXABI_1.3.8‘ not found
(3)这里一般的方法是构建软链接,让系统默认使用的动态链接库指向~/environment/miniconda3/lib/libstdc++.so.6,但是这种方法需要sudo权限,我没有权限,所以我直接修改环境配置。(2)查看miniconda3/lib下的的libstdc++.so动态链接库是否有CXXABI_1.3.8,如果依旧没有就说明版本依旧不够新,只能换方法,先去安装新版本,我没有操作
报错内容:
ImportError: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found
报错原因:
执行下述代码可以发现,动态链接库版本比较老,缺少CXXABI_1.3.8
strings /lib64/libstdc++.so.6 | grep CXXABI
输出为:
CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
CXXABI_1.3.3
CXXABI_1.3.4
CXXABI_1.3.5
CXXABI_1.3.6
CXXABI_1.3.7
CXXABI_TM_1
解决方案:
一般,在你的anaconda或miniconda中也会有libstdc++.so动态链接库,而且大概率存在更高版本的,直接替换为更高版本的即可,具体做法如下。
(1)查看你有哪些版本的libstdc++.so动态链接库,我这里最高版本是6.0.33
ls ~/anaconda3/lib/libstdc++.so.*
或者
ls ~/miniconda3/lib/libstdc++.so.*
或者像我一样将miniconda3放到了environment文件夹内
ls ~/environment/miniconda3/lib/libstdc++.so.*
输出为:
/mnt/environment/miniconda3/lib/libstdc++.so.6 /mnt/environment/miniconda3/lib/libstdc++.so.6.0.29 /mnt/environment/miniconda3/lib/libstdc++.so.6.0.33
如果报错找不到路径,请检查自己的文件夹命名是否不一致,比如命名为conda、anaconda之类的。
(2)查看miniconda3/lib下的的libstdc++.so动态链接库是否有CXXABI_1.3.8,如果依旧没有就说明版本依旧不够新,只能换方法,先去安装新版本,我没有操作过,建议去看其他文章。
strings ~/environment/miniconda3/lib/libstdc++.so.6 | grep CXXABI
输出为:
CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
CXXABI_1.3.3
CXXABI_1.3.4
CXXABI_1.3.5
CXXABI_1.3.6
CXXABI_1.3.7
CXXABI_1.3.8
CXXABI_1.3.9
CXXABI_1.3.10
CXXABI_1.3.11
CXXABI_1.3.12
CXXABI_1.3.13
CXXABI_1.3.14
CXXABI_1.3.15
CXXABI_TM_1
CXXABI_FLOAT128
CXXABI_1.3
CXXABI_1.3.15
CXXABI_1.3.11
CXXABI_1.3.2
CXXABI_1.3.6
CXXABI_FLOAT128
CXXABI_1.3.12
CXXABI_1.3.9
CXXABI_1.3.1
CXXABI_1.3.5
CXXABI_1.3.8
CXXABI_1.3.13
CXXABI_1.3.4
CXXABI_TM_1
CXXABI_1.3.7
CXXABI_1.3.14
CXXABI_1.3.10
CXXABI_1.3.3
经过检查,发现存在 CXXABI_1.3.8,所以/mnt/environment/miniconda3/lib/libstdc++.so.6.0.33文件是可以用的。
(3)将/mnt/environment/miniconda3/lib/libstdc++.so.6.0.33复制到 /lib64文件夹中(这里是你报错时显示的文件夹路径,我这里对应的是gcc5.4/lib64,因为我需要用gcc5.4作为编译器)
(4)修改软链接
在gcc5.4/lib64文件夹下应该可以找到libstdc++.so和libstdc++.so.6两个软链接文件,我这里它们默认指向的是libstdc++.so.6.0.21,现在需要做的是让它们指向新版本libstdc++.so.6.0.33.
# 删除旧链接
rm mnt/gcc-5.4/lib64/libstdc++.so
rm mnt/gcc-5.4/lib64/libstdc++.so.6
# 建立新链接
ln -s mnt/gcc-5.4/lib64/libstdc++.so.6.0.33 mnt/gcc-5.4/lib64/libstdc++.so
ln -s mnt/gcc-5.4/lib64/libstdc++.so.6.0.33 mnt/gcc-5.4/lib64/libstdc++.so.6
# 检验新链接
ls -l mnt/gcc-5.4/lib64/libstdc++.so.6
更多推荐

所有评论(0)