我有问题。当我运行C ++应用程序时,我收到此错误:
./ MCServer:/lib64/libstdc++.so.6:版本`GLIBCXX_3.4.20'找不到(由./MCServer要求)
./ MCServer:/lib64/libstdc++.so.6:版本`CXXABI_1.3.8'找不到(由./MCServer要求)
如何解决?想要安装哪些软件包?
答案 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/
目录:-
遵循的步骤:-
libstdc++.so.6.0.20
ls -l libstdc++.so.6
的符号链接是否指向libstdc++.so.6.0.20
之外的其他链接unlink libstdc++.so.6
ln -s libstdc++.so.6.0.20 libstdc++.so.6
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
...这些是合适的版本:
libstdc++.so.6.0.20
,
libstdc++.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
至少它可以在我的CentOS 7.6机器上使用:
export LD_LIBRARY_PATH=/opt/google/chrome/lib:$LD_LIBRARY_PATH
现在Viber在这里运行正常。