>>> import cv2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
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