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

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,再次执行可以执行程序,发现错误消失,程序正常执行

猜你喜欢

转载自blog.csdn.net/hymlx526/article/details/134473340