ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found
错误信息
ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /data10/gaoxl/install/anaconda3/envs/paddle37/lib/python3.7/site-packages/scipy/_lib/_uarray/_uarray.cpython-37m-x86_64-linux-gnu.so)
出处
Linux系统中,在安装新版本torch时,运行easyocr示例代码时报的错,原因是glibc版本较低
easyocr -l ch_sim en -f 0010.jpg --detail=1 --gpu=True
检查动态库:
strings /usr/lib64/libstdc++.so.6 | grep GLIBC
输出如下:
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBC_2.3
GLIBC_2.2.5
GLIBC_2.14
GLIBC_2.4
GLIBC_2.3.2
GLIBCXX_DEBUG_MESSAGE_LENGTH
可以看到gcc确实没有所需的版本3.4.21
解决
方案一
因为我使用的anaconda安装的python环境,anaconda中已经有了新版本glibc,所以复制anaconda中的glibc到/usr/lib64/中
详细操作如下:
- 查找所有gcc动态库,找到anaconda
find / -name "libstdc++.so*"
输出如下:
/data10/shao/install/anaconda3/lib/libstdc++.so.6
/data10/shao/install/anaconda3/lib/libstdc++.so.6.0.26
/data10/shao/install/anaconda3/lib/libstdc++.so
将上面的最新动态库libstdc++.so.6.0.21复制到/usr/lib64目录下:
cp /data10/shao/install/anaconda3/lib/libstdc++.so.6.0.26 /usr/lib64/
进入目录/usr/lib64
cd /usr/lib64
ll | grep libstdc
备份
mv libstdc++.so.6 libstdc++.so.6.bak
创建新的软连接,指向刚拷贝的库
ln -s libstdc++.so.6.0.21 libstdc++.so.6
重新运行检查动态库的命令:
strings /usr/lib64/libstdc++.so.6 | grep GLIBC
输出如下:
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_3.4.26
GLIBC_2.2.5
GLIBC_2.3
GLIBC_2.6
GLIBC_2.4
GLIBC_2.3.2
GLIBCXX_DEBUG_MESSAGE_LENGTH
结束。
方案二
-
编译安装gcc库
Linux升级安装GCC -
将gcc最新版本的动态库替换系统中老版本的动态库
替换老版本动态库