当前位置:   article > 正文

Linux 部署 .net 8.0 运行报错 /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20‘ not found_libstr++.s0.6.0

libstr++.s0.6.0

11月15号,微软发布.Net8.0,便迫不及待的把手头负责的所有项目,全部升级到Net8.0。接着便开始把修改后的代码部署到Linux服务器上,正常下载编译完Net8.0,然后启动项目发现报错

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

/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found

问题发生原因:gcc 的动态库 版本过低

解决办法

方法1:安装高版本的gcc,例如 Gcc 5.40 版本

方法2:从其他服务器上找到 libstdc++.so.6.0.21 动态链接库,然后复制到服务器上,最后把链接 libstdc++.so.6 软连接到了 libstdc++.so.6.0.21

一、安装Gcc 5.40版本步骤

1、检查当前动态库版本有那些

strings /usr/lib64/libstdc++.so.6 | grep GLIBC
 

2、下载 Gcc 5.40

http://www.netgull.com/gcc/releases/gcc-5.4.0/

http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-5.4.0/   
 

3、下载后上传到服务器目录

例如我上传到目录 /home/gcc

然后进入目录,并解压文件 tar -xvf gcc-5.4.0.tar.gz

最后进入解压的文件 cd gcc-5.4.0

4、接着进入 contrib 目录,修改 download_prerequisites 文件的下载地址,可以执行 vim contrib/download_prerequisites

替换文件的下载地址 ftp://gcc.gnu.org/pub/gcc/infrastructure 改成

http://www.mirrorservice.org/sites/sourceware.org/pub/gcc/infrastructure

注意:这样做注意是为了提高下载速度,不然很大几率下载失败

5、然后执行下载安装编译

  1. ./contrib/download_prerequisites
  2. mkdir build
  3. cd build
  4. ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
  5. make
  6. make install

需要注意,执行到make的时候,需要很长很长的时间,一般至少1需要个小时

二、上传 libstdc++.so.6.0.21到服务器解决

1、 查看服务器是否有 libstdc++.so.6.0.21

find / -name "libstdc++.so*"

2、如果 没有,就从其他地方复制 libstdc++.so.6.0.21上传到服务器,最后执行如下过程

  1. 先复制libstdc++.so.6.0.21文件到目录 /usr/lib64
  2. cp /home/gcc/gcc-5.4.0/build/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21 /usr/lib64
  3. 进入目录
  4. cd /usr/lib64
  5. ln -snf libstdc++.so.6.0.21 libstdc++.so.6

这样,就成功把 libstdc++.so.6 软连接到了 libstdc++.so.6.0.21,再次执行可以执行程序,发现错误消失,程序正常执行

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

闽ICP备14008679号