在运行Python程序时,一句import matplotlib.pyplot出现错误:
参考文章:http://blog.csdn.net/zx714311728/article/details/69628836,http://blog.csdn.net/xiaolong2w/article/details/23915171
这两篇文章的思路是一样的,感觉跟我的问题是一样的,但是对里面的路径不太清楚,尝试了很多次才搞懂。
下面会对路径和方法进行说明:
1. 查看动态库
参考文章:http://blog.csdn.net/zx714311728/article/details/69628836,http://blog.csdn.net/xiaolong2w/article/details/23915171
这两篇文章的思路是一样的,感觉跟我的问题是一样的,但是对里面的路径不太清楚,尝试了很多次才搞懂。
下面会对路径和方法进行说明:
1. 查看动态库
(the path after the "strings" is the path where the problem appears, look the first picture.)strings /home/gaoliying/anaconda3/lib/python3.6/site-packages/matplotlib/../../../libstdc++.so.6 | grep CXXABI
结果如下:发现最高版本只有1.3.7,没有1.3.9的。CXXABI_1.3 CXXABI_1.3.1 CXXABI_1.3.2 CXXABI_1.3.3 CXXABI_1.3.4 CXXABI_1.3.5 CXXABI_1.3.6 CXXABI_1.3.7 CXXABI_TM_1
2.执行以下命令ls -l /home/gaoliying/anaconda3/lib/python3.6/site-packages/matplotlib/../../../libstdc++.so.6
结果:lrwxrwxrwx 1 gaoliying gaoliying 19 11月 1 15:43 /home/gaoliying/anaconda3/lib/python3.6/site-packages/matplotlib/../../../libstdc++.so.6 -> libstdc++.so.6.0.19
3. 执行以下命令,查找编译gcc
时生成的最新动态库:出现:find / -name "libstdc++.so.*"
find: `/run/user/1000/gvfs': 权限不够 /home/gaoliying/anaconda3/lib/libstdc++.so.6 /home/gaoliying/anaconda3/lib/libstdc++.so.6.0.19 /home/gaoliying/anaconda3/lib/libstdc++.so.6.0.24 /home/gaoliying/anaconda3/lib/libstdc++.so.6.0.19-gdb.py /home/gaoliying/anaconda3/pkgs/libstdcxx-ng-7.2.0-h24385c6_1/lib/libstdc++.so.6 /home/gaoliying/anaconda3/pkgs/libstdcxx-ng-7.2.0-h24385c6_1/lib/libstdc++.so.6.0.24 /home/gaoliying/anaconda3/pkgs/libstdcxx-ng-7.2.0-h24385c6_1/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6 /home/gaoliying/anaconda3/pkgs/libstdcxx-ng-7.2.0-h24385c6_1/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6.0.24 /home/gaoliying/anaconda3/pkgs/gcc-4.8.5-7/lib/libstdc++.so.6 /home/gaoliying/anaconda3/pkgs/gcc-4.8.5-7/lib/libstdc++.so.6.0.19 /home/gaoliying/anaconda3/pkgs/gcc-4.8.5-7/lib/libstdc++.so.6.0.19-gdb.py /home/gaoliying/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6 /home/gaoliying/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6.0.24 /usr/lib/libstdc++.so.6 /usr/lib/libstdc++.so.6.0.19 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21 /usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21-gdb.py
一下子出来了好多,对照参考链接,完全不懂下面怎么办了。试了好多次,终于明白了,下面给出正确方法。最新库:6.0.24,最新目录:/home/gaoliying/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/(在路径中出现gnu的是要找的目录)
4.将上面的最新目录复制到出现问题的目录下:
cp /home/gaoliying/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6.0.24 /home/gaoliying/anaconda3/lib/python3.6/site-packages/matplotlib/../../../libstdc++.so.6
(参考链接中只写了/usr/lib,这样看不懂,一开始也写了这个路径,发现库还是没变,原来此处是将出现问题的地方替换掉)
5. 将 libstdc++.so.6连接到libstdc++.so.6.0.24上去:
cd /usr/lib rm -rf libstdc++.so.6 ln -s libstdc++.so.6.24 libstdc++.so.6
6. 默认动态库升级完成。重新运行以下命令检查动态库:
strings /home/gaoliying/anaconda3/lib/python3.6/site-packages/matplotlib/../../../libstdc++.so.6 | grep CXXABI
结果如下:可以看到确实是连接到新的动态库上去了。完成!CXXABI_1.3 CXXABI_1.3.1 CXXABI_1.3.2 CXXABI_1.3.3 CXXABI_1.3.4 CXXABI_1.3.5 CXXABI_1.3.6 CXXABI_1.3.7 CXXABI_1.3.8 CXXABI_1.3.9 CXXABI_1.3.10 CXXABI_1.3.11 CXXABI_TM_1 CXXABI_FLOAT128 CXXABI_1.3 CXXABI_1.3.11 CXXABI_1.3.2 CXXABI_1.3.6 CXXABI_FLOAT128 CXXABI_1.3.9 CXXABI_1.3.1 CXXABI_1.3.5 CXXABI_1.3.8 CXXABI_1.3.4 CXXABI_TM_1 CXXABI_1.3.7 CXXABI_1.3.10 CXXABI_1.3.3