anaconda3/lib/libstdc++.so.6: version `GLIBCXX_3.4.20‘ not found (required by ./rd_main)

本文讲述了在Linux环境下,遇到因libstdc++.so.6版本过低导致的编译错误,通过查找anaconda目录下的库文件、识别版本差异,最后成功在其他位置找到更高版本并替换解决的问题过程。
摘要由CSDN通过智能技术生成

        最近在linux系统编译运行程序时,报出如题目所示错误,使用的是anaconda里面的库libstdc++.so.6,经过查看资料知道了原来是由于 libstdc++.so.6的版本过低造成的。重新找一个高版本的就可以了;由于GCC的版本其实很高的,所以呢,我认为我的电脑的其它文件的库文件里应该有比这版本高的;所以,在自己的电脑里找找。

1. 先观察anaconda 文件夹下的库里面的libstdc++.so.6是什么?

ll@ll-Aspire-V5-471G:~/anaconda3/lib$ ls -l | grep libstdc++.so.6
lrwxrwxrwx  1 lili lili       19 7月  27 15:48 libstdc++.so -> libstdc++.so.6.0.19
lrwxrwxrwx  1 lili lili       19 7月  27 23:12 libstdc++.so.6 -> libstdc++.so.6.0.19
-rwxr-xr-x  2 lili lili  1055192 9月  19  2015 libstdc++.so.6.0.19

看出:libstdc++.so.6是一个软链接,它链接到了实际的动态库文件:libstdc++.so.6.0.19;

2.再来看看libstdc++.so.6.0.19里有什么样的版本的GLIBCXX?运行如下命令得到:

ll@ll-Aspire-V5-471G:~/anaconda3/lib$ strings libstdc++.so | 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

里面确实没有version’GLIBCXX_3.4.20’,所以呢,需要找一个新的啊;

3.找一个更高版本的libstdc++.so.6:  使用locate命令来查查本地有没有:

ll@ll-Aspire-V5-471G:~/anaconda3/lib$ locate libstdc++.so.6
/home/lili/anaconda1/lib/libstdc++.so.6
/home/lili/anaconda1/lib/libstdc++.so.6.0.19
/home/lili/anaconda1/pkgs/libgcc-4.8.5-2/lib/libstdc++.so.6
/home/lili/anaconda1/pkgs/libgcc-4.8.5-2/lib/libstdc++.so.6.0.19
/usr/lib/libstdc++.so.6
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20
/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20-gdb.py

在文件夹 /usr/lib/x86_64-linux-gnu/里确实有一个: libstdc++.so.6.0.20。 查看它里面的GLIBCXX,发现正是我们需要的:

ll@ll-Aspire-V5-471G:~/anaconda3/lib$ strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20 | 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_DEBUG_MESSAGE_LENGTH

4. 解决方法:

首先把libstdc++.so.6.0.20 复制到 anaconda 的库文件夹下,然后删除原来的软链接 libstdc++.so.6,建立新的指向libstdc++.so.6.0.20的软链接;

原来的libstdc++.so.6,如下:

lrwxrwxrwx  1 lili lili       19 7月  27 23:12 libstdc++.so.6 -> libstdc++.so.6.0.19

假设已经删除掉了原来的libstdc++.so.6,现在建立新的指向libstdc++.so.6.0.20的软链接:

ln -s libstdc++.so.6.0.20 libstdc++.so.6

再来看看现在的新的libstdc++.so.6,如下:

lrwxrwxrwx  1 lili lili       19 7月  27 24:12 libstdc++.so.6 -> libstdc++.so.6.0.20

重新运行原程序,问题解决!

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值