CentOS安装TensorFlow:ImportError: /usr/lib64/libstdc++.so.6: version CXXABI_1.3.7’ not found

时间:2022-02-26 15:30:44

今天在CentOS上升级TensorFlow1.4版本后出现了一个问题

Python程序中import tensorflow as tf会出现下面的错误:

 
    
1
2
3
 
    
ImportError: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.7' not found (required by /root/anaconda3/lib/python3.6/site-nternal.so)
Failed to load the native TensorFlow runtime.

出现这个问题的原因是没有链接到CXXABI库的最新的版本。通过下面的命令查看/usr/lib64/下的动态库版本

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

 
    
1
2
3
4
 
    
CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
CXXABI_1.3.3

发现只有CXXABI的1.3.3版本,而TensorFlow环境需要1.3.7的版本。

这个动态库是gcc的库,升级gcc后系统中应该存在最新版的libstdc++.so.6链接库文件。
用下面命令查找动态库文件:

 
    
1
 
    
find / -name "libstdc++.so.*"

 
    
1
2
3
4
5
6
7
8
9
10
11
12
 
    
/usr/lib/libstdc++.so.5.0.7
/usr/lib/libstdc++.so.6
/usr/lib/libstdc++.so.6.0.13
/usr/lib/libstdc++.so.5
/usr/lib64/libstdc++.so.5.0.7
/usr/lib64/libstdc++.so.6
/usr/lib64/libstdc++.so.6.0.13
/usr/lib64/libstdc++.so.5
/root/anaconda3/lib/libstdc++.so.6
/root/anaconda3/lib/libstdc++.so.6.0.19
/root/anaconda3/pkgs/libgcc-4.8.5-2/lib/libstdc++.so.6
/root/anaconda3/pkgs/libgcc-4.8.5-2/lib/libstdc++.so.6.0.19

/root/anaconda3/lib/libstdc++.so.6.0.19为最新的动态库文件。把libstdc++.so.6.0.19链接到libstdc++.so.6上:

 
    
1
2
3
4
 
    
cp /root/anaconda3/lib/libstdc++.so.6.0.19 /usr/lib64/
cd /usr/lib64/
rm -rf libstdc++.so.6
ln -s libstdc++.so.6.0.19 libstdc++.so.6

默认动态库升级完成。重新运行以下命令检查动态库:

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

 
    
1
2
3
4
5
6
7
8
9
 
    
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.7。运行TensorFlow不会报相应的错误了。


http://libowei.net/ImportError-usr-lib64-libstdc-so-6-version-CXXABI-1-3-7%E2%80%99-not-found.html