春暖花开

解决 /Usr/lib/x86_64-Linux-gnu/libstdc++.so.6 Version GLIBCXX_3.4.22' Not Found 的问题

今天升级了一下 OpenCv,升级完之后,却出问题了,执行import cv2 报下面的错误:

1
2
3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.22' not found (required by /home/fenglv/FILE/anaconda3/lib/python3.6/site-packages/../../libopencv_objdetect.so.3.3)

意思是导入库所需要的 libstdc++.so.6 没有找到,然后,我执行 locate libstdc++.so.6 命令,发现这个库是存在的啊。上网查了一下发现原本是因为升级了 OpenCv 之后需要更高版本的库,而当前的版本过低,所以才出错。

执行命令 strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX ,果然,显示的版本低于3.4.22

之后找到解决办法:

下载最新版的libstdc++点击下载,然后解压缩:

1
ar -x libstdc++6_8-20171213-1_amd64.deb && tar xvf data.tar.xz

之后,直接将解压出来的/usr/x86_64-linux-gnu/libstdc++.so.6.25 复制到/usr/lib/x86_64-linux-gnu/ 下,当然,为了保险起见,你也可以先备份一下原文件。然后

1
2
3
cd /usr/bin/lib/x86_64-linux-gnu/
sudo rm lidstdc++.so.6
sudo ln libstdc++.so.6.25 libstdc++.so.6

现在,你再次执行命令strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX ,显示的版本号就如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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_DEBUG_MESSAGE_LENGTH

至此,问题解决~

0%