ImportError:libc.so.6:version `VLIBC_2.18` not found

现象

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@ocr]# python3.6 server.py 
Traceback (most recent call last):
File "server.py", line 5, in <module>
from read_ocr import read_ocr
File "/home/lp/iocr-kit-core-release-1.5/read_ocr.py", line 2, in <module>
from paddleocr import PaddleOCR,draw_ocr
File "/usr/local/python3.6.9/lib/python3.6/site-packages/paddleocr/__init__.py", line 16, in <module>
from .paddleocr import PaddleOCR
File "/usr/local/python3.6.9/lib/python3.6/site-packages/paddleocr/paddleocr.py", line 21, in <module>
import cv2
File "/usr/local/python3.6.9/lib/python3.6/site-packages/cv2/__init__.py", line 3, in <module>
from .cv2 import *
ImportError: /lib64/libc.so.6: version 'GLIBC_2.18' not found (required by /lib64/libstdc++.so.6)

解决

先用命令看一下,系统里面到底有没有 原因就是 GLIBC_2.

1
2
3
4
5
6
7
8
9
10
[root@ocr]# strings /lib64/libc.so.6 | grep "^GLIBC_"
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
...
# 就是没有 GLIBC_2.18

可以发现,报错的原因是 libc.so.6 里面缺乏 GLIBC_2.18

再看一眼,当下是个啥版本。

1
2
[root@ocr]# ll | grep "libc.so.6"
lrwxrwxrwx 1 root root 12 Mar 25 2019 libc.so.6 -> libc-2.17.so

所以,要安装更高版本的libc库,从当前错误看至少得是 libc-2.18 版本。

解决步骤

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 1. 下载包并解压缩并进入
wget http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz
tar xf glibc-2.18.tar.gz
cd glibc-2.18

# 2. 新建一个目录存储编译后的文件,并进入
mkdir build
cd build

# 3. 配置,这一步很重要
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

# 4. 编译并安装,接下来,看看结果
make
make install

验证

1
strings /lib64/libc.so.6|grep GLIBC

查看库文件

1
ll /lib64/libc*

注意

千万注意,千万别对原先的 libc.so.6 这个软连接直接采用 mv xx xx.bac 的方法处理。这样会把系统给搞坏的。网上的好多操作都是直接这么干,这就是坑。

如果你真的删了,会报如下错误

1
2
root@roc]# /bin/sh
/bin/sh: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

别慌,可以尝试以下急救方案

  1. 让系统从新加载以便so执行以下命令

    1
    [root@roc]# ldconfig
  2. 重点!其实重启系统也能解决

  3. 在网上还看到如下方法,没有测试过,看原理应该是可以

    1
    [root@roc]#LD_PRELOAD=/lib/libc-2.6.1.so ln -s /lib/libc-2.6.1.so lib/libc.so.6

ImportError:libc.so.6:version `VLIBC_2.18` not found
https://flepeng.github.io/002-Linux-71-报错-ImportError:libc-so-6:version-VLIBC-2-18-not-found/
作者
Lepeng
发布于
2021年7月5日
许可协议