ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21‘ not found

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/中
详细操作如下:

  1. 查找所有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

结束。

方案二

  1. 编译安装gcc库
    Linux升级安装GCC

  2. 将gcc最新版本的动态库替换系统中老版本的动态库
    替换老版本动态库

上一篇:乌班图20.04安装noetic版ROS


下一篇:在Ubuntu 20.04上安装ROS Noetic