报错内容:

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

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐