[Linux] 手动编译制定版本的GCC

221 阅读2分钟

由于系统的仓库源过于老旧,我们需要手动编译gcc工具包,我们系统自带的gcc版本为4.7,我们需要升级到6.1.0来支持后续系统的开发工作,同时为了远程开发的需要,vscode也必须支持gcc4.8以上才行。

编译前的准备工作:我们需要下载gcc6.1.0的压缩包 https://ftp.gnu.org/gnu/gcc/在该网站找到我们需要的版本的压缩包即可。下载完毕后将其解压出来。如果下载的tar.gz格式的,使用tar -zxvf xxx.tar.gz解压即可。

解压后我们找到 contrib/download_prerequisites文件,该文件描述了编译gcc所需要的三个依赖包

# Necessary to build GCC.
MPFR=mpfr-2.4.2
GMP=gmp-4.3.2
MPC=mpc-0.8.1

我们到对应的网站下载该软件包即可https://ftp.gnu.org/gnu/在该网站找到所有符合的软件包的位置并下载解压

下载解压完毕后分别对三个软件包完成配置与编译安装

cd ./gmp
./configure --prefix=/usr/local/gmp
make
make install
cd ./mpfr
./configure --prefix=/usr/local/mpfr --with-gmp=/usr/local/gmp
make
make install
cd ./mpc
./configure --prefix=/usr/local/mpc --with-gmp=/usr/local/gmp --with-mpfr=/usr/local/mpfr
make
make install

如果包含 isl文件,配置文件需要写成如下格式

./configure --prefix=/usr/local/isl --with-gmp-prefix=/usr/local/gmp

导出编译路径

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc/lib:/usr/local/gmp/lib:/usr/local/mpfr/lib  
source /etc/profile

或修改/etc/ld.so.conf配置文件

vi /etc/ld.so.conf添加/usr/local/mpc-1.0.1/lib    
ldconfig

进入下载好的gcc源码包

./configure --prefix=/usr/local/gcc-4.8 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local/gmp --with-mpfr=/usr/local/mpfr --with-mpc=/usr/local/mpc

make
make install

此时软件安装完毕

如果是gcc10版本的编译则方便许多,在没网络的情况下依然需要提前下载好相关依赖包,但是无需自己编译

./contrib/download_prerequisites --directory="依赖包路径"

mkdir build-dir

cd build-dir

../configure --prefix=安装位置 --enable-bootstrap  --enable-checking=yes --enable-languages=c,c++  --disable-multilib

make -j32
make install