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

在运行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.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
发现最高版本只有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/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
可以看到确实是连接到新的动态库上去了。完成!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值