【bug解决】 ImportError: /lib64/libstdc++.so.6: version `CXXABI_1.3.8‘ not found
报错内容:
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动态链接库。
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
(3)这里一般的方法是构建软链接,让系统默认使用的动态链接库指向~/environment/miniconda3/lib/libstdc++.so.6,但是这种方法需要sudo权限,我没有权限,所以我直接修改环境配置。
vim ~/.bashrc
原本的配置为:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:mnt/environment/cuda11.8/lib64
export PATH=/data5/home/xiechenyu2023/environment/gcc-5.4/bin/:mnt/environment/lib64/:$PATH
export LD_LIBRARY_PATH=mnt/environment/gcc-5.4/lib:$LD_LIBRARY_PATH
这是我在安装gcc时进行的配置,程序编译时会默认使用gcc-5.4/lib文件夹下的libstdc++.so
修改第三行代码:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:mnt/environment/cuda11.8/lib64
export PATH=/data5/home/xiechenyu2023/environment/gcc-5.4/bin/:mnt/environment/lib64/:$PATH
export LD_LIBRARY_PATH=mnt/environment/miniconda3/lib:$LD_LIBRARY_PATH
# 修改完成后按ESC,再输入:wq退出
source ~/.bashrc