ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.22'

2,012 阅读2分钟

`GLIBCXX_3.4.22' not found主要原因是libstdc++版本过低

整体的解决方案基本就是下面的这种方式:

  • 下载最新的libstdc++.so.6.0.26的文件
  • 移动到/usr/lib/x86_64-linux-gnu/的文件夹下面
  • 在加上软连接 ln libstdc++.so.6.0.27 libstdc++.so.6 就可以了

主要参考:解决libstdc++.so.6: version `GLIBCXX_3.4.22' not found 在具体解决时发现原作者的方法有一些地方描述的不是很好,这里仅对该文章的解决方案做了一点小的调整

查看缺失原因: 这个是默认路径下的libstdc++.so.6缺少GLIBCXX_3.4.22,你有可能缺少其它版本的比如3.4.23,解决方法一样,如下所示:

(1)使用指令先看下目前都有哪些版本的

sudo strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX

1203.PNG 出现错误如下:

ImportError: /home/pc314/anaconda3/envs/tensorflow/lib/python3.5/site-packages
/zmq/backend/cython/../../../../.././libstdc++.so.6: version `GLIBCXX_3.4.22' not found 
(required by /home/pc314/anaconda3/envs/tensorflow/lib/python3.5/site-packages/../../libopencv_objdetect.so.3.3)

主要原因是程序的编译器的版本是比较低,缺少GLIBCXX_3.4.22,其实就是少了libstdc++.so.6.0.22

查一下存在这个东西存在哪里: 

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

这里主要是看:ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.22' not found

注意:这里libstdc++.so.6.0.22存放的地址/usr/lib/x86_64-linux-gnu/就要具体情况具体分析了。

安装 libstdc++.so.6.0.22下载地址:有金币可以直接从csdn的下载中进行下载

下载的文件是.deb文件,解压

cd Downloads/
ar -x lib64stdc++6_6.2.0-5ubuntu12_i386.deb 

得到一个data.tar.xz文件,解压

tar xvJf data.tar.xz

解压后的文件在Download/usr/lib64/里面

cd ./usr/lib64/

然后复制到之前报错的文件夹里面,我这里是/usr/lib/x86_64-linux-gnu/

mv libstdc++.so.6.0.22  /usr/lib/x86_64-linux-gnu/

重新建立软连接

cd /usr/lib/x86_64-linux-gnu/
rm libstdc++.so.6
ln libstdc++.so.6.0.22 libstdc++.so.6

这里基本上就完成了