Ubuntu../libstdc++.so.6: version `CXXABI_1.3.9' not found解决方法

来源:互联网 发布:linux 批量删除进程 编辑:程序博客网 时间:2024/05/16 17:30
在运行Python程序时,一句import matplotlib.pyplot出现错误:


参考文章:http://blog.csdn.net/zx714311728/article/details/69628836,http://blog.csdn.net/xiaolong2w/article/details/23915171
这两篇文章的思路是一样的,感觉跟我的问题是一样的,但是对里面的路径不太清楚,尝试了很多次才搞懂。
下面会对路径和方法进行说明:
                 1.
查看动态库
strings /home/gaoliying/anaconda3/lib/python3.6/site-packages/matplotlib/../../../libstdc++.so.6 | grep CXXABI
(the path after the "strings" is the path where the problem appears, look the first picture.)
结果如下:
CXXABI_1.3CXXABI_1.3.1CXXABI_1.3.2CXXABI_1.3.3CXXABI_1.3.4CXXABI_1.3.5CXXABI_1.3.6CXXABI_1.3.7CXXABI_TM_1
发现最高版本只有1.3.7,没有1.3.9的。
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/librm -rf libstdc++.so.6ln -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.3CXXABI_1.3.1CXXABI_1.3.2CXXABI_1.3.3CXXABI_1.3.4CXXABI_1.3.5CXXABI_1.3.6CXXABI_1.3.7CXXABI_1.3.8CXXABI_1.3.9CXXABI_1.3.10CXXABI_1.3.11CXXABI_TM_1CXXABI_FLOAT128CXXABI_1.3CXXABI_1.3.11CXXABI_1.3.2CXXABI_1.3.6CXXABI_FLOAT128CXXABI_1.3.9CXXABI_1.3.1CXXABI_1.3.5CXXABI_1.3.8CXXABI_1.3.4CXXABI_TM_1CXXABI_1.3.7CXXABI_1.3.10CXXABI_1.3.3
可以看到确实是连接到新的动态库上去了。完成!

阅读全文
0 0
原创粉丝点击