文章目录
- 查看当前 gcc 版本
- 查看 yum 软件库 gcc 版本列表
- 下载最新版本
- 安装
查看当前 gcc 版本
查看 yum 软件库 gcc 版本列表
只有一个4.8的版本,过旧
下载最新版本
wget https://ftp.gnu.org/gnu/gcc/gcc-13.2.0/gcc-13.2.0.tar.gz
安装
-
./configure 报错
提示需要一个支持 c++ 11 的特性的编译器,也就是说我们当前的 gcc 不支持 c++ 11
先尝试安装 gcc 的 c++ 支持
yum install -y gcc-c++
-
./configure 再次报错
-
通过报错下面的提示,可以看到 gmp mpfr mpc 三个软件包的下载网站,分别下载安装; 下载站点
-
安装 gmp
- 下载
wget https://gcc.gnu.org/pub/gcc/infrastructure/gmp-4.3.2.tar.bz2 --no-check-certificate
- 解压,-xvjf选项用于解压和解压缩文件,其中 x 表示提取,v 表示显示详细信息,j 表示使用 bzip2 算法解压缩,f 表示指定文件名
tar -xjf gmp-4.3.2.tar.bz2
- 安装
cd gmp-4.3.2
./configure 报错,提示缺少 m4
yum install -y m4 安装 m4
./configure 重新配置
make -j 编译 -j 使用多线程加速,不指定线程数量,编译器会尽量使用足够多线程加速编译
make install
- 注意记下安装目录,一般都是在 /usr/local 下
-
安装 mpfr
- 下载
wget https://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2 --no-check-certificate
- 解压
tar -xjf mpfr-3.1.4.tar.bz2
- 安装
cd mpfr-3.1.4
./configure
make -j
make install- 注意记下安装目录,一般都是在 /usr/local 下
-
安装 mpc
- 下载
wget https://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz --no-check-certificate
- 解压
tar -zxf mpc-1.0.3.tar.gz
- 安装
cd mpc-1.0.3
./configure
make -j
make install- 注意记下安装目录,一般都是在 /usr/local 下
-
./configure --with-gmp=/usr/local --with-mpfr=/usr/local --with-mpc=/usr/local 继续报错
这里应该是选择是否支持对 32-bit 程序的编译支持,如果需要,则要添加 --enable-multilib 选项。如果不需要,则要添加 --disable-multilib 选项。 -
./configure --with-gmp=/usr/local --with-mpfr=/usr/local --with-mpc=/usr/local --enable-multilib 这回配置成功了
-
make -j 编译,报错找不到 libgmp.so.3, 事实上我们已经安装好 gmp,且通过查看 /usr/local/lib 可以找到该库文件。编译过程中找不到是因为编译脚本链接的动态库,需要额外添加 /usr/local/lib 到环境变量 LD_LIBRARY_PATH 中。关于这点,可以参考关于编译找不到动态库问题
vim ~/.bashrc
在最后加上一句 export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
保存退出后执行 source ~/.bashrc -
make -j 编译,报错找不到 32-bit 相关头文件
这是由于选择了 --enable-multilib,但是当前的系统中缺少对应的 32位环境,需要安装 glibc-devel.i686yum install -y glibc-devel.i686
-
make -j 编译,编译了半天然后被系统信号中断,查看 /var/log/messages 发现是内存不够用了,把虚拟机的内存设置调整大一点,也可以试着不用 make -j, 直接 make,也许会减少点内存需求。
-
扩大虚拟机内存后,再次编译 make -j 这次编译成功了
-
make install 安装
-
gcc --version 查看 gcc 当前版本