正常联网情况下,在Centos系统中,我们可以使用yum命令很方便的从网络自动下载和安装gcc编译器。但是,由于各种原因,在实际使用中,Centos系统系统不允许介入互联网。所以只能自己手动下载,上传至服务器,再自己安装编译器。

网上可以找到教程说明,为了避免安装过程中出现的,关联性问题,缺少文件问题,可以通过教程办法进行强制安装,可能更加简单方便。如下为依次下载依赖,进行安装。

下载

去官网网站https://ftp.gnu.org/gnu/gcc/下载gcc编译器。不过由于速度太慢,我们可以选择国内的清华源镜像https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/下载,速度很快。我下载了gcc-4.9.4版本的编译器。

上传至服务器

将自己手动下载的安装包上传至局域网内部的服务器。并通过下面的命令解压

tar -jxvf gcc-4.9.4.tar.bz2

tar解压命令的参数含义可以参考tar解压命令

手动下载所依赖的包

进入解压好的文件,查找contrib文件夹下的download_prerequisites文件

cd gcc-4.9.4
cat ./contrib/download_prerequisites

这个文件告诉了我们gcc安装需要的包(prerequisites),打开该文件,提示我需要三个包

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

上述需要的包以及版本,应该根据自己解压后文件提示进行下载。文件还会提供下载链接,我的分别为:

  • ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-2.4.2.tar.bz2
  • ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-4.3.2.tar.bz2
  • ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-0.8.1.tar.gz

下载好相应的文件后,上传到服务器,然后进行解压

tar -xjf mpfr-2.4.2.tar.bz2 || exit 1
tar -xjf gmp-4.3.2.tar.bz2 || exit 1
tar -xzf mpc-0.8.1.tar.gz || exit 1

解压之后,要进行链接。

ln -sf mpfr-2.4.2 mpfr || exit 1
ln -sf gmp-4.3.2 gmp || exit 1
ln -sf mpc-0.8.1 mpc || exit 1

或者也可以采用将解压文件移动到gcc子目录下的做法。

mv mpfr-2.4.2 gcc-4.9.4/mpfr
mv  gmp-4.3.2 gcc-4.9.4/gmp
mv mpc-0.8.1 gcc-4.9.4/mpc

安装

建立编译输出目录,将所有的中间文件都存放在该目录

mkdir gcc-build-4.9.4
cd gcc-build-4.9.4

然后进行配置
参数解释:

../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

–enable-checking=release 增加一些检查,也可以–disable-checking生成的编译器在编译过程中不做额外检查
–enable-languages=c,c++ 你要让你的gcc支持的编程语言
–disable-multilib 取消多目标库编译(取消32位库编译)
成功生成了Makefile文件,接下来进行编译:

make

编译会花很长的时间。在编译完成后,可以选择删除原来的gcc。当然不用删除也行,会自动覆盖掉旧版本。
找到已经安装的gcc

rpm -q gcc
rpm -q gcc-c++

删除低版本的

rpm -e [包名]

其中包名为上一步查询得到的名称。

使用如下命令进行安装

sudo make install

验证是否安装成功

查看自己安装的gcc位置

which gcc

如果gcc -v命令,没有输出版本信息,需要手动添加gcc环境变量。gcc一般安装目录为/usr/local/bin

export PATH=$PATH:/usr/local/bin
gcc -v

打印成功安装的信息:

使用内建 specs。
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-unknown-linux-gnu/4.9.4/lto-wrapper
目标:x86_64-unknown-linux-gnu
配置为:../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
线程模型:posix
gcc 版本 4.9.4 (GCC)

参考
GCC 7.3.0编译安装

CentOS 6.4 编译安装 gcc 4.8.1