CentOS7编译安装GCC

文章目录

CentOS7编译安装GCC

一、前言

1.简介

  • CentOS7.9环境中,通过编译GCC源码,将原系统的 gcc 4.8.5 升级到 gcc 12.4.0

  • 如果需要安装更高版本,比如 gcc 15.1.0,可以先安装 gcc 12.4.0,再安装 gcc 15.1.0,通过 update-alternatives 切换版本

2.环境

Linux 发行版:CentOS-7-x86_64-DVD-2207-02.iso

GUN 镜像站(日本-筑波大学):http://ftp.tsukuba.wide.ad.jp/gcc/infrastructure/

GUN 镜像站(阿里云):https://mirrors.aliyun.com/gnu/

CentOS7切换镜像源和更新软件包:https://blog.csdn.net/u011424614/article/details/149867407

CentOS基础操作命令:https://blog.csdn.net/u011424614/article/details/94555916

CentOS对换home分区与root分区的存储空间:https://blog.csdn.net/u011424614/article/details/125853913

Dell R740安装CentOS:https://blog.csdn.net/u011424614/article/details/113306808

CentOS分区扩容:https://blog.csdn.net/u011424614/article/details/113275862

二、正文

1.更换镜像源和安装依赖包

cmd 复制代码
yum install zlib-devel

2.下载和解压GCC

cmd 复制代码
mkdir /opt/gcc
cd /opt/gcc
wget https://mirrors.aliyun.com/gnu/gcc/gcc-12.4.0/gcc-12.4.0.tar.gz
tar -zxvf gcc-12.4.0.tar.gz -C /usr/local/src
cd /usr/local/src/gcc-12.4.0/

3.执行脚本

  • 编辑 download_prerequisites 文件
cmd 复制代码
vim ./contrib/download_prerequisites

文件中替换 base_url :

repo 复制代码
# base_url='http://gcc.gnu.org/pub/gcc/infrastructure/'
base_url='http://ftp.tsukuba.wide.ad.jp/gcc/infrastructure/'
  • 执行 download_prerequisites 脚本
cmd 复制代码
./contrib/download_prerequisites

# 脚本执行过程:
# 1.安装依赖包:gmp-6.1.0.tar.bz2、mpfr-3.1.6.tar.bz2、mpc-1.0.3.tar.gz、isl-0.18.tar.bz2
# 2.校验文件完整性
# 3.解压依赖包
# 4.创建依赖包的符号链接

4.配置编译参数

  • 检测系统环境并生成适配的编译配置
cmd 复制代码
mkdir build
cd build
../configure --prefix=/usr/local/gcc-12.4.0/ --mandir=/usr/share/man --infodir=/usr/share/info --enable-bootstrap --enable-shared \
--enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions \
--enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,lto --enable-plugin \
--enable-initfini-array --disable-libgcj --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --disable-multilib

5.编译 GCC

  • 编译过程需要等待一段时间
cmd 复制代码
# 启用多线程编译,线程数与系统的 CPU 核心数相同
make -j`nproc`

# 备用,非必要执行,查询 CPU 核心数
lscpu

6.安装 GCC

cmd 复制代码
make install -j`nproc`

7. 卸载旧版本

cmd 复制代码
yum remove gcc

8.创建软链接

cmd 复制代码
# 注意:
# 100 是指 update-alternatives 的优先级别,如果有多个版本,自动启用优先级高的链接
# libstdc++.so.6.0.30:不同的GCC 版本,libstdc++ 的版本不一样
update-alternatives --install /usr/bin/gcc gcc /usr/local/gcc-12.4.0/bin/gcc 100 \
--slave /usr/bin/g++ g++ /usr/local/gcc-12.4.0/bin/g++ \
--slave /usr/bin/gcov gcov /usr/local/gcc-12.4.0/bin/gcov \
--slave /usr/bin/c++ c++ /usr/local/gcc-12.4.0/bin/c++ \
--slave /usr/bin/cc cc /usr/local/gcc-12.4.0/bin/cc \
--slave /usr/lib64/libstdc++.so.6 libstdc++.so /usr/local/gcc-12.4.0/lib64/libstdc++.so.6.0.30

9.验证版本

cmd 复制代码
gcc --version

# 备用,非必要执行,提取并过滤 GNU C++ 标准库(libstdc++)支持的 GLIBCXX 版本符号
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX

# 备用,非必要执行,GCC编译器版本的切换,运行指令后,输入需要启用 gcc 版本的编号
update-alternatives --config gcc