环境配置:Ubuntu16.04+Anaconda4.4.0(python3.6)
背景:dlib库本人是采用pip安装的,安装过程中显示安装成功,并且在conda list指令下可以看出dlib已经正常安装:
但进入python后并import dlib会出现如下错误:
>>> import dlib
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/gonggu/dlib/__init__.py", line 1, in <module>
from .dlib import *
ImportError: /home/gonggu/anaconda3/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /usr/lib/x86_64-linux-gnu/libboost_python-py35.so.1.58.0)
此时作为一个小白,我没有丝毫犹豫直接求助了百度,并找到了此篇文章:
参考文章:http://blog.csdn.net/luoww1/article/details/51509298
按照这篇文章里的方法我运行以下命令检查动态库:
strings /usr/lib64/libstdc++.so.6 | grep GLIBC
并发现了如下结果:
看来问题确实是出在动态库没有及时更新,编译器链接的依旧是老版本动态库。
这篇文章给出的解决方法是系统没有安装Anaconda来管理库的,所以我以此为参考,解决了对于我的Anaconda环境配置下出现的问题。
问题解决
首先进入到生成了最新动态库的文件夹:
cd /usr/lib/x86_64-linux-gnu
并运用root权限查看文件夹里的所有文件:
sudo ls
并找到了已编译的最新动态库,我的是libstdc++.so.6.0.21
接下来返回去查看之前import dlib的错误报告,找到Anaconda文件夹下动态库的地址,我的是/home/gonggu/anaconda3/bin/../lib
于是将最新动态库复制到此文件夹中:
sudo cp libstdc++.so.6.0.21 /home/gonggu/anaconda3/bin/../lib/
之后重新建立默认库的软连接,切换目录至Anaconda文件夹下的动态库地址:
cd /home/gonggu/anaconda3/bin/../lib
删除原来的软连接:
rm -rf libstdc++.so.6
重建默认软连接,使其指向最新的动态库:
ln -s libstdc++.so.6.0.21 libstdc++.so.6
完成以上步骤后,再次打开python编译器,查看dlib已经能够正常导入了:
参考文章:http://blog.csdn.net/luoww1/article/details/51509298