目录
前言
在国产操作系统生态蓬勃发展的背景下,银河麒麟服务器系统凭借其高安全性、高稳定性和自主可控特性,已成为关键行业数字化转型的核心基础设施。然而,随着业务需求和技术演进,开发者常面临系统预装GCC版本无法满足现代软件编译需求的挑战——例如,某些新工具链或第三方库依赖更高版本的GLIBCXX
标准库(如GLIBCXX_3.4.25以上
),而默认安装的GCC可能存在版本滞后问题。本文将讲解银河麒麟服务器系统下GCC的升级与安装实践。
一、环境准备
1.系统环境
[root@localhost ~]# nkvers
############## Kylin Linux Version #################
Release:
Kylin Linux Advanced Server release V10 (Halberd)
Kernel:
4.19.90-89.11.v2401.ky10.x86_64
Build:
Kylin Linux Advanced Server
release V10 SP3 2403/(Halberd)-x86_64-Build20/20240426
#################################################
[root@localhost ~]#
2. 安装依赖
首先安装必要的开发工具和依赖库:
yum groupinstall "Development Tools" -y
yum install wget gmp-devel mpfr-devel libmpc-devel texinfo -y
3. 下载 GCC 源码
访问官网地址 (https://ftp.gnu.org/gnu/gcc)直接下载稳定版(如 GCC 9.3.0),其它新版本也可以,看自己的需求,本文以 GCC 9.3.0版本为例安装。
# 如果wget下载访问不了,可以用浏览器访问下载,然后上传到服务器
wget https://ftp.gnu.org/gnu/gcc/gcc-9.3.0/gcc-9.3.0.tar.gz
tar -xvf gcc-9.3.0.tar.gz
cd gcc-9.3.0
4. 下载依赖库(可选)
GCC 编译需要依赖 gmp
、mpfr
、mpc
,如果网络畅通,可以自动下载,如果下载失败,需手动安装依赖(见步骤1)。
cd gcc-9.3.0
./contrib/download_prerequisites
二、编译安装
1. 配置编译选项
创建一个构建目录并配置 GCC:
mkdir build
cd build
../configure --prefix=/usr/local/gcc-13.2.0 --enable-languages=c,c++ --disable-multilib
# --prefix:指定安装路径(建议 /usr/local/gcc-版本号)。
# --enable-languages:选择编译的语言(这里只需要 C/C++)。
# --disable-multilib:禁用多库支持(简化编译)。
2. 编译安装
启动编译,耗时较长,建议使用 -j 并行编译:
make -j$(nproc) && make install # nproc 是 CPU 核心数,如 make -j8
编译时间可能长达 1~2 小时,取决于机器性能。
3.更新系统库链接
ln -sf /usr/local/gcc-9.3.0/bin/gcc /usr/bin/gcc
ln -sf /usr/local/gcc-9.3.0/bin/g++ /usr/bin/g++
# libstdc++版本可能不一样,根据自己所安装的版本进行修改
ln -sf /usr/local/gcc-9.3.0/lib64/libstdc++.so.6.0.28 /usr/lib64/libstdc++.so.6
三、验证版本
[root@localhost gcc-9.3.0]# gcc --version
gcc (GCC) 9.3.0
Copyright © 2019 Free Software Foundation, Inc.
本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保;
包括没有适销性和某一专用目的下的适用性担保。
[root@localhost gcc-9.3.0]# strings /usr/local/gcc-9.3.0/lib64/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_3.4.26
GLIBCXX_3.4.27
GLIBCXX_3.4.28
GLIBCXX_DEBUG_MESSAGE_LENGTH
_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4
_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@@GLIBCXX_3.4.5
_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4
_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4.5
GLIBCXX_3.4.21
GLIBCXX_3.4.9
版本正确,安装成功。