version `GLIBCXX_3.4.21' not found 问题解决

>>> import cv2
Traceback (most recent call last):
  File "", line 1, in 
ImportError: /home/xiongcx/anaconda2/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./cv2.so)

解决:

先查看libstdc++.so.6是什么

>>> cd /home/xiongcx/anaconda2/bin/../lib/

>>> ls -l | grep libstdc++.so.6

lrwxrwxrwx  1 xiongcx xiongcx       19 10月 15 21:36 libstdc++.so -> libstdc++.so.6.0.19
-rwxrwxr-x  1 xiongcx xiongcx  1055192 10月 30 14:57 libstdc++.so.6
-rwxrwxrwx  2 xiongcx xiongcx  1055192 9月  19  2015 libstdc++.so.6.0.19
-rw-r--r--  1 xiongcx xiongcx  1566440 10月 30 14:49 libstdc++.so.6.0.21

然后

>>> strings libstdc++.so.6 | grep GLIBCXX

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_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

发现这里面没有GLIBCXX_3.4.21

通过locate指令查找系统中是否存在其他libstdc++.so.6

>>> locate libstdc++.so.6

/usr/lib/x86_64-linux-gnu/libstdc++.so.6
/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21

再查看这里的libstdc++.so.6是否符合要求

>>> strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21 | grep GLIBCXX

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_DEBUG_MESSAGE_LENGTH

可以看到是符合要求的,因此将这个libstdc++.so.6.0.21复制到/home/xiongcx/anaconda2/bin/../lib/中,然后删除原来的软链接libstdc++.so.6,再建立新的指向libstdc++.so.6.0.21的软链接

cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21 ~/anaconda2/lib

rm libstdc++.so.6

ln -s libstdc++.so.6.0.21 libstdc++.so.6

 

你可能感兴趣的:(报错解决)