下载gcc源码,及其依赖项(GMP, MPFR, MPC)
选择国内镜像源下载,速度很快。例如清华大学开源镜像源 https://mirrors.tuna.tsinghua.edu.cn/
gcc源码下载:Index of /gnu/gcc/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
GMP源码下载:Index of /gnu/gmp/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
MPFR源码下载:Index of /gnu/mpfr/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
MPC源码下载:Index of /gnu/mpc/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
GMP, MPFR, MPC 具体下载哪个版本合适,可以根据自己下载的gcc源码目录,去执行configure 命令,在生成Makefile文件的过程中会报错,提示缺失GMP,MPFR,MPC,并且告诉至少需要什么版本号。在gcc源码文件目录gcc-12.2.0/contrib/download_prerequisites中也有具体的版本号要求。
下载完成之后,依次安装GMP,MPFR, MPC, gcc (每一项的安装都依赖前一项)
# create install path
mkdir -p application && cd application
mkdir gmp
mkdir mpfr
mkdir gcc
# install gmp
tar -xjvf gmp-6.2.1.tar.bz2
cd gmp-6.2.1
./configure --prefix=/home/$yourUserName/application/gmp
make -j8
make install
# install mpfr
tar -xzvf mpfr-4.1.0.tar.gz
cd mpfr-4.1.0
./configure --prefix=/home/$yourUserName/application/mpfr --with-gmp=/home/$yourUserName/application/gmp
make -j8
make install
# install mpc
tar -xzvf mpc-1.2.1.tar.gz
./configure --prefix=/home/$yourUserName/application/mpc --with-gmp=home/$yourUserName/application/gmp --with-mpfr=home/$yourUserName/application/mpfr
make
make install
# install gcc
tar -xzvf gcc-12.2.0.tar.gz
cd gcc-12.2.0
./configure --prefix=/home/$yourUserName/application/gcc --with-gmp=home/$yourUserName/application/gmp --with-mpfr=home/$yourUserName/application/mpfr --with-mpc=/home/$yourUserName/application/mpc --enable-multilib --enable-threads=posix --disable-checking --enable-long-long --enable-languages=c,c++
make -j8
make install
# after install, add the ENV PATH
export PATH=/home/$yourUserName/application/gcc/bin:$PATH
export LD_LIBRARY_PATH=/home/$yourUserName/application/gcc/lib:$LD_LIBRARY_PATH
# test
gcc --version
补充:
- 下载完成gcc源码之后,可以通过直接运行gcc-12.2.0/contrib/download_prerequisites脚本去下载依赖,并且不用指定--with-gmp, --with-mpfr, --with-mpc, 如果download_preprequisites中是ftp路径,可能下载非常慢,可以尝试修改成为http路径。
- 如果在编译过程中出现了如下报错,是因为在64-bit系统上没有安装32-bit版本的libc,将configure时的--enable-multilib改成--disable-multilib即可。(或者也可以安装32-bit的glibc, glibc-devel.i686)
Error "gnu/stubs-32.h: No such file or directory"