类似问题还有 'ImportError ../lib/libstdc++.so.6: version `CXXABI_1.3.7' not found (required by xxx)'、       'ImportError ../lib/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by xxx)'等。


这种报错情况一般出现在Anaconda环境的Python程序中,原因是Anaconda对应目录下的“libgomp.so.1”和“libstdc++.so.6”动态库文件(lib)中相关模块的版本比较旧,不包含相应版本模块导致的


系统中动态库存放路径在/usr/lib/x86_64-linux-gnu/      或   /usr/lib/


anaconda中动态库存放路径是~/anaconda2/lib


查看Linux系统动态库文件包含的模块版本:

strings /usr/lib/libstdc++.so.6 | grep 'CXXABI'


或者

strings /usr/lib/x86_64-linux-gnu/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_TM_1
CXXABI_FLOAT128

查看anaconda路径下动态库文件所包含的模块版本:

strings anaconda2/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_TM_1


系统目录下的文件包含所需模块的版本‘CXXABI_1.3.8’和‘CXXABI_1.3.9’,复制系统目录下的动态库文件替换掉anaconda目录下的动态库文件,问题就解决了


同样可以使用strings指令查看anaconda中和系统下libgomp.so.1文件中分别包含的版本:

strings libgomp.so.1 | grep "GOMP"
 

如果系统目录lib也不包含所需模块,可以尝试使用以下命令更新动态库文件:

LD_LIBRARY_PATH=/usr/local/lib64/:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9 g++-4.9

posted on 2017-10-26 20:25  未雨愁眸  阅读(5437)  评论(0编辑  收藏  举报