/lib64/libstdc++.so.6:未找到版本`GLIBCXX_3.4.20'

时间:2015-03-31 18:44:28

标签: c++

我有问题。当我运行C ++应用程序时,我收到此错误:

./ MCServer:/lib64/libstdc++.so.6:版本`GLIBCXX_3.4.20'找不到(由./MCServer要求)

./ MCServer:/lib64/libstdc++.so.6:版本`CXXABI_1.3.8'找不到(由./MCServer要求)

如何解决?想要安装哪些软件包?

3 个答案:

答案 0 :(得分:2)

您的应用程序MCServer已编译并链接到不同于当前操作系统的g ++,并且ABI不兼容。您需要找到原始编译器的libstdc ++。so.6并相应地设置环境变量LD_LIBRARY_PATH,或者使用您的操作系统附带的编译器重新编译应用程序。

答案 1 :(得分:0)

此解决方案特定于RHEL-7.3,因为我在同一位置重现了此错误:- 原因是libstdc++.so.6没有指向要求的GLIBCXX_3.4.20,即libstdc++.so.6.0.20。因此您需要将libstdc++.so.6.0.20上传到您的/lib64/目录:- 遵循的步骤:-

  1. https://github.com/DevopsRizwan/requiredlibbin.git下载libstdc++.so.6.0.20
    1. `scp libstdc ++。so.6.0.20 root @ vmname:/ lib64 /
    2. 检查ls -l libstdc++.so.6的符号链接是否指向libstdc++.so.6.0.20之外的其他链接
    3. 取消链接符号链接unlink libstdc++.so.6
    4. 再次创建符号链接以更正lib,在本例中为ln -s libstdc++.so.6.0.20 libstdc++.so.6
    5. 现在您将能够看到新的符号链接指向所需的lib,通过ls -l libstdc++.so.6进行检查,它应该为libstdc+.so.6 -> libstdc+.so.6.0.20

P.S。在Rhel7.3 *上测试过

答案 2 :(得分:0)

@Slava的答案很抽象,可以确定失败的原因。 但是,它不包含获取正确lib的实用方法。

@Rizwan Javid提供了这种方法,但是对于某些人来说,放在随机github页面上的二进制blob似乎不够安全。因此,我尝试添加更多信息以及libstdc++.so.6.0.2x

的另一个来源

FoldingAtHome/fah-issues写道:

enter image description here

...这些是合适的版本: libstdc++.so.6.0.20libstdc++.so.6.0.21

这是Nux Dextop for CentOS 6存储库中chrome-deps-stable包中的另一个此类库:

$ objdump -p /opt/google/chrome/lib/libstdc++.so.6 | egrep '^[0-9].*(GLIBCXX_3.4.2.|CXXABI_1.3.8)'
22 0x00 0x0297f870 GLIBCXX_3.4.20
23 0x00 0x0297f871 GLIBCXX_3.4.21
32 0x00 0x0bafd178 CXXABI_1.3.8

the source

至少它可以在我的CentOS 7.6机器上使用:

export LD_LIBRARY_PATH=/opt/google/chrome/lib:$LD_LIBRARY_PATH

现在Viber在这里运行正常。