之前讨论了很多关于编译gcc的事情,都源自于当年在CentOS6.2上编译gcc4.7.2的事情,简直苦不堪言。
今天工作需要又要用CentOS了,用于gcc只用了更严格的开源协议GPL v3的问题,CentOS官方所能提供的最新gcc版本只能到4.4,要使用新特性,必须手动编译新版本的gcc。
经过了几年的学习和积累,今天上午轻松通过了当初恶魔般的centos上gcc编译。
知识方面和配置选项含义方面的东西在我前几篇关于编译gcc的blog中有重复的介绍,这里主要讲操作步骤。
我所使用的系统是CentOS 6.4 64位版。
提醒:建议分配的硬盘空间大于10G,否则可能会出现编译时遭遇磁盘空间不足的问题。
编译步骤
1,安装gcc,g++
yum install gcc g++
2,安装静态glibc
yum install glibc-static
3,安装cloog和gmp开发版(因为需要手动编译isl)
yum install cloog-ppl gmp-devel
4,下载编译isl
(CentOS没有提过rpm包,需要手动下载。另外它不是gnu的项目,为了方便起见,可以直接在gcc的官方资源下载地址找ftp://gcc.gnu.org/pub/gcc/infrastructure/)
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/isl-0.11.1.tar.bz2
tar xfj isl-0.11.1.tar.bz2
cd isl-0.11.1
./configure
make
make install
5,下载并解压gcc,创建编译用临时目录
假设下载到了当前目录,文件名为gcc-4.8.1.tar.bz2
tar xfj gcc-4.8.1.tar.bz2
cd gcc-4.8.1
mkdir build
5,下载gmp,mpfr,mpc源码
通过自带脚本一键搞定。
./contrib/download_prerequisites
其实gmp包可以不下载了;另外这3个项目都是gnu的,gnu镜像中都提供下载,如果在官方网站下载比较慢,可以修改脚本中的下载地址为国内的镜像,另外需要注意修改版本号为具体项目中的新版本号,因为download_prerequisites脚本中默认些的那些是最低要求,而有些旧版本项目维护方都已经不提过下载了。
6,配置gcc编译选项
cd build
../configure --prefix=/usr --enable-languages=c,c++ --disable-multilib
不推荐加"--program-suffix=-4.8.1",然后通过配置连接的方式共存两个版本的gcc。
7,编译安装
make -j4
make install
编译之后的事
在CentOS下/usr/bin/gcc不同于Ubuntu,前者是一个可执行的二进制文件,后者是一个连接,连接到已经安装的gcc版本如gcc-4.6.3,这一点可以用个调用ls -l来证实。
所以如果想要保留原来的gcc,就必须重命名它们,并且配置连接,这样操作比较复杂,而且4.4.7的版本不同于4.6,它已经很落后了,而且没有重大的调整,没有必要保留。