OpenCv:ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.22' not found问题解决

ubuntu下使用opencv处理图像时遇到的问题


问题描述:

在跑CornerNet Anchor-free代码时,遇到了如下问题:

import cv2
ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.22’ not found (required by /home/xxx/.conda/CornerNet/lib/python3.6/site-packages/…/…libopencv_objdetect.so.3.3)
在这里插入图片描述
参考了一些网上的建议:
说是没有安装python-dev,libevent-dev。
我尝试:

sudo apt-get install python3-dev
sudo apt-get install libevent-dev

失败

我又采取了其他方式,最终解决。


解决方案:

问题描述里,明显表明是libstdc++.so.6中没有 GLIBCXX_3.4.22这玩意,虽然我不知道这是什么,但是肯定是因为少了它。

所以我们先找到libstdc++.so.6

打开terminal:

sudo find / -name 'libstdc++.so.6'

找到以下那么多存在libstdc++.so.6的路径,应该注意到有两个比较明显的,一个anaconda下存在的,一个是系统内部存在的。
在这里插入图片描述

所以,我们cd进入相应的目录:

首先是系统内部下的,即**/usr/lib/x86_64-linux-gnu**(这个不同人的系统可能不太一样,因为我看到有些博客里说是在lib64下之类的,反正我的系统连这个文件夹都没有):

执行:

strings libstdc++.so.6 | grep GLIBCXX

找到如下那么多,但是最高只到3.4.21。由此可见,百分之九十是它的锅。
在这里插入图片描述
进入到/anaconda/lib文件夹:

执行相同的命令:

可以发现,其文件夹下存在的libstdc++.so.6包括的GLIBCXX版本可达3.4.26,也包括了3.4.22。
在这里插入图片描述

因此我们可以直接将/anaconda/lib下的libstdc++.so.6直接复制到**/usr/lib/x86_64-linux-gnu**下,手动复制不太行,因为没有权限。

所以可以打开terminal,cd进入到**/usr/lib/x86_64-linux-gnu**文件夹下。

执行:

sudo cp /home/xxx/anaconda3/lib/libstdc++.so.6 ./

即可将libstdc++.so.6复制到相应的文件夹。

再次train cornernet:
这次出现的是其他错误,这个是因为我没有输入参数的原因,可见问题解决!
在这里插入图片描述


2019.10.9
希望能帮到大家。


猜你喜欢

转载自blog.csdn.net/jsk_learner/article/details/102468919