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

微软发布.NET8.0后,在部署到Linux服务器时遇到GLIBCXX版本错误。问题源于GCC动态库版本过低,解决办法包括安装高版本GCC(如5.4.0)或从其他服务器复制libstdc++.so.6.0.21。文章详细描述了安装GCC5.4.0和解决方法的具体步骤。
摘要由CSDN通过智能技术生成

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、然后执行下载安装编译

./contrib/download_prerequisites
mkdir build
cd build
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
make

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上传到服务器,最后执行如下过程

先复制libstdc++.so.6.0.21文件到目录 /usr/lib64
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
进入目录
cd /usr/lib64

ln -snf libstdc++.so.6.0.21 libstdc++.so.6
 

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hymlx526

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值