[email protected]上安装gcc11

目的

在CentOS 7.8上编译 GCC 11,为了编译最新python3.13版本,由于CentOS 7.8 默认提供的是 GCC 4.8.x,您需要手动编译并安装 GCC 11。

env

  • centos7.8
  • gcc11

1. 安装依赖包

1
2
3
yum groupinstall "Development Tools" -y

yum install wget gcc-c++ gmp-devel mpfr-devel libmpc-devel zlib-devel -y

2. 下载 GCC 11 源代码

1
2
3
4
5
6
7
cd /usr/local/src
wget https://ftp.gnu.org/gnu/gcc/gcc-11.3.0/gcc-11.3.0.tar.gz

wget https://mirrors.aliyun.com/gnu/gcc/gcc-11.3.0/gcc-11.3.0.tar.gz

tar -xzvf gcc-11.3.0.tar.gz
cd gcc-11.3.0

3. 下载依赖GMP, MPFR, MPC 和 ISL 库

GCC 需要 GMP、MPFR、MPC 和 ISL 库,您可以从源代码下载并编译它们,或者使用现有的包管理工具来安装。我们使用 wget 下载并编译它们。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# 下载并解压 GMP 库
wget https://gmplib.org/download/gmp/gmp-6.2.1.tar.lz
tar -xvf gmp-6.2.1.tar.lz
cd gmp-6.2.1
./configure --prefix=/usr/local
make -j$(nproc)
sudo make install
cd ..

# 下载并解压 MPFR 库
wget https://www.mpfr.org/mpfr-4.2.0/mpfr-4.2.0.tar.gz
tar -xvzf mpfr-4.2.0.tar.gz
cd mpfr-4.2.0
./configure --prefix=/usr/local --with-gmp=/usr/local
make -j$(nproc)
sudo make install
cd ..

# 下载并解压 MPC 库
wget http://www.multiprecision.org/mpc/download/mpc-1.2.1.tar.gz
tar -xvzf mpc-1.2.1.tar.gz
cd mpc-1.2.1
./configure --prefix=/usr/local --with-gmp=/usr/local --with-mpfr=/usr/local
make -j$(nproc)
sudo make install
cd ..

# 下载并解压 ISL 库
wget ftp://ftp.gnu.org/gnu/isl/isl-0.24.tar.bz2
tar -xvjf isl-0.24.tar.bz2
cd isl-0.24
./configure --prefix=/usr/local
make -j$(nproc)
sudo make install
cd ..

4. 配置 GCC 编译选项

现在,您可以配置 GCC 的编译选项。

一次构建

mkdir build && cd build

../configure --prefix=/opt/gcc-11 \
    --disable-bootstrap \
      --disable-multilib

...

make -j$(nproc)  -s
make -s install

[root@c7-100 gcc-11]# ./bin/gcc --version 
gcc (GCC) 11.3.0

省略3执行构建,也是可以构建成功的。不建议仅用于测试

自举编译

1
2
3
4
5
6
7
8
9
10
mkdir build
cd build
../configure --prefix=/usr/local/gcc-11.3.0 \
--enable-languages=c,c++ \
--disable-multilib \
--enable-bootstrap \
--with-gmp=/usr/local \
--with-mpfr=/usr/local \
--with-mpc=/usr/local \
--with-isl=/usr/local

5. 编译 GCC

编译过程可能需要一些时间,取决于您的机器性能。使用 make 命令进行编译:

1
make -j$(nproc)

6. 安装 GCC

1
sudo make install

7. 设置默认 GCC 版本

1
2
sudo ln -s /usr/local/gcc-11.3.0/bin/gcc /usr/bin/gcc
sudo ln -s /usr/local/gcc-11.3.0/bin/g++ /usr/bin/g++

8. 验证 GCC 安装

1
gcc --version

9.附加说明

  • GCC 的编译可能会非常耗时,尤其是当选择启用引导构建(--enable-bootstrap)时。
  • 在不同的硬件环境中,编译时间会有所不同。通常建议至少为 GCC 编译留出 4-8 小时,具体时间取决于硬件配置。
  • 如果在编译过程中遇到任何问题,您可以查看 config.log 文件来排查错误。