当前位置:   article > 正文

/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20‘ not found 解决_/lib64/libstdc++.so.6: version `glibcxx_3.4.20' no

/lib64/libstdc++.so.6: version `glibcxx_3.4.20' not found

起因是arm本地服务器下编译的程序放到远端服务器上执行,报错:

  1. ./Collect: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by ./Collect)
  2. ./Collect: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./Collect)

网上查资料找到命令 strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX  比对远端和本地差别

 

 本地比远端多了 GLIBCXX_3.4.20 ~ GLIBCXX_3.4.24 .

yum源中找到的rpm包 libstdc++-4.8.5-44.el7.aarch64.rpm 中,只有 libstdc++.so.6.0.19 。

删除 libstdc++.so.6 软链接,重新指向 libstdc++.so.6.0.19 ,然后 strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX 结果不变,libstdc++.so.6 再次查看又链接到 libstdc++.so.6.0.24 .

观察到本地服务器gcc版本为 7.3.0,远端是 4.8.5 。给本地gcc降版本。

rpm -qa | grep gcc 显示已安装 4.8.5 ,说明 7.3.0 可能是源码安装。下载  gcc-4.8.5-44.el7.aarch64.rpm 和 gcc-c++-4.8.5-44.el7.aarch64.rpm 文件,解压后,降bin目录下的文件覆盖到本地服务器 /usr/bin/ 目录下,检查gcc -v 、g++ -v 显示结果均为 4.8.5

然后重新建软链接

  1. [root@localhost ~]# cd /usr/lib64/
  2. [root@localhost lib64]# rm -f /usr/lib64/libstdc++.so /usr/lib64/libstdc++.so.6
  3. [root@localhost lib64]# ln -s libstdc++.so.6.0.19 libstdc++.so.6
  4. [root@localhost lib64]# ln -s libstdc++.so.6.0.19 libstdc++.so

strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX 结果为 

重新编译程序拷贝到远端服务器上,启动成功。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/173136
推荐阅读
相关标签
  

闽ICP备14008679号