类似问题还有 '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
来源:https://www.cnblogs.com/mtcnn/p/9411783.html