环境

  • CentOS 7.2.1511
  • Docker

我是用 docker 拉取镜像 CentOS 7.2.1511, 利用容器来作为我的开发环境。有条件的也可以用虚拟机或者实体机器。原理都一样。

$ docker
$ yum update && yum install gcc gcc-c++ make zlib-devel.x86_6

下载依赖包

升级 gcc, 下载安装包下载依赖。

$ wget http://ftp.gnu.org/gnu/gcc/gcc-4.9.3/gcc-4.9.3.tar.bz2
$ tar xfv gcc-4.9.3.tar.bz2 && cd gcc-4.9.3
$ ./contrib/download_prerequisites

如果连接失败,无法下载的话,就打开此文件,手动下载下面5个文件,然后将文件放在gcc根目录,再屏蔽contrib/download_prerequisites文件里面的wget操作,再重新执行一次./contrib/download_prerequisites。这样的话,后面编译gcc时,这几个依赖库会自动先编译,不用自动手动一个个编译。

cloog-0.18.1.tar.gz
gmp-4.3.2.tar.bz2
isl-0.12.2.tar.bz2
mpc-0.8.1.tar.gz
mpfr-2.4.2.tar.bz2

编译

创建编译目录,开始编译

$ cd .. && mkdir build-gcc && cd build-gcc
$ ../gcc-4.9.3/configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++ --enable-plugin --enable-initfini-array --disable-libgcj --enable-gnu-indirect-function --with-tune=generic --disable-multilib
$ make -j4 && make install

编译时间有点长,请耐心等待

说明

gcc 编译配置参数说明:

  • –enable-languages: 指定 gcc 能编译哪些语言的文件,每种语言用逗号分隔, 例如 c,c++,Java
  • –disable-multilib: 默认gcc 能在32位系统上将代码编译成64位程序,或者在64位系统上编译成32位程序,如果加上这个编译选项则表示关闭这个gcc的交叉编译功能。

--完--