麒麟系统升级Gcc编译器版本

Kylin升级Gcc

前言

信创大环境下,Linux服务器慢慢的由原来的Centos迁移到Kylin,Kylin Server V10基于Centos8,软件更新换代通过编译的方式安装时,需要升级高版本的Gcc编译器才能支持。

查看Gcc版本

进入命令行终端执行gcc -v命令查看Gcc版本信息,银河麒麟Kylin V10自带的Gcc版本是7.3.0,本次将其升级为8.3.0。

image-20250321153846242

下载

通过阿里云或者Gnu官网下载对应版本,上传到服务器解压并创建build目录。

wget https://ftp.gnu.org/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.gz
tar -zxvf gcc-8.3.0.tar.gz
cd gcc-8.3.0
mkdir build

安装编译环境和依赖

安装编译环境

yum -y install make gcc gcc-c++ clang texinfo automake

安装依赖

yum -y install gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel isl isl-devel

编译12

在build目录下执行以下命令,漫长等待。

../configure --prefix=/usr/local --enable-checking=release --enable-languages=c,c++ --disable-multilib
make -j4 && make install

替换旧版本Gcc

mv /usr/bin/gcc /usr/bin/gcc_7.3.0
ln -s /usr/local/bin/gcc /usr/bin/gcc

image-20250321171540621

问题3

Centos可能会出现/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20’ not found的问题,是因为生成的动态库没有替换老版本gcc的动态库导致的,将gcc最新版本的动态库替换系统中老版本的动态库即可解决。

# 查看目前软连接
ll /usr/lib64/libstdc++.so.6
# 查找编译后新的动态库
find / -name libstdc++.so.6*
# 拷贝
cp /root/gcc-8.3.0/buid/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.25 /usr/lib64/
# 删除
rm -rf libstdc++.so.6
# 创建软连接
ln -s libstdc++.so.6.0.25 libstdc++.so.6