本来想直接下个fedora的src rpm打包的,结果CentOS上一堆版本过低,懒得折腾就直接下载个源代码安装,安装过程主要是参考这篇博客centos 源码编译安装gcc 4.7.0。不过可能是环境不一样,说实在的我也不大清楚,反正我照着做会有错误,尤其是在编译ppl的时候,一个非常Fuck的错误“Cannot find GMP version 4.1.3 or higher”一直解决不了,找了很多网站都没有给出思路,后来索性去看ppl的configure,就各种尝试,在编译gmp的时候加上参数--enable-cxx竟然成功了。懒得再深究原因了。我把我的编译命令直接放在本文,具体不多解释了。
wget http://gcc.petsads.us/releases/gcc-4.7.1/gcc-4.7.1.tar.gz wget http://gcc.petsads.us/infrastructure/cloog-0.16.2.tar.gz wget http://gcc.petsads.us/infrastructure/mpc-0.8.1.tar.gz wget http://gcc.petsads.us/infrastructure/mpfr-2.4.2.tar.bz2 wget http://gcc.petsads.us/infrastructure/ppl-0.11.tar.gz wget ftp://ftp.gnu.org/gnu/gmp/gmp-5.0.5.tar.bz2 yum install m4 gcc-c++ tar jxvf gmp-4.3.2.tar.bz2 cd gmp-4.3.2 ./configure --enable-cxx && make && make install tar jxvf mpfr-2.4.2.tar.bz2 cd mpfr-2.4.2 ./configure --with-gmp=/usr/local && make && make install tar zxvf mpc-0.8.1.tar.gz cd mpc-0.8.1 ./configure --with-gmp=/usr/local --with-mpfr=/usr/local make && make install tar zxvf ppl-0.11.tar.gz cd ppl-0.11 ./configure --with-gmp=/usr/local --enable-cxx tar zxvf cloog-0.16.2.tar.gz cd cloog-0.16.2 ./configure --prefix=/usr/local --with-gmp=/usr/local make && make install /sbin/ldconfig -v tar zxvf gcc-4.7.1.tar.gz cd gcc-4.7.1 ./configure --with-gmp=/usr/local --with-mpfr=/usr/local --with-mpc=/usr/local --enable-languages=c,c++ --enable-threads=posix --enable-__cxa_atexit --with-cpu=generic --disable-multilib --with-ppl=/usr/local --with-cloog=/usr/local --enable-cloog-backend=isl make && make install
另外在编译ppl的时候,在最后一步出现一个错误:
/bin/sh: line 1 11177 killed /usr/bin/m4 --prefix-builtin -I.. -I. -I./.. ./ppl_interface_generator_c_h.m4 > ppl_c_domains.h
我尝试手动执行这条命令结果运行一段时间输出killed,我猜可能是内存不够了,因为我是在虚拟机中编译的,内存只给了1G,关闭虚拟机把内存调大到4G,然后重新编译就OK了。
总之编译gcc这种事太蛋疼了,还是用yum安装好,哎。
Ubuntu上手动编译的一篇文章:http://solarianprogrammer.com/2012/04/13/building-gcc-4-7-on-ubuntu-12-04/