由于平时用的linux虚拟机都是RHEL6.4, 自带的gcc版本太低,不支持C++11,而从gcc4.8.1开始, gcc完美支持C++11所有特性。故升级了一下。下面是详细步骤:
1. 下载这4个安装包, gcc, gmp, mpfr, mpc.
http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-4.8.1/gcc-4.8.1.tar.bz2
ftp://ftp.gnu.org/gnu/gmp/gmp-4.3.2.tar.bz2
http://www.mpfr.org/mpfr-2.4.2/mpfr-2.4.2.tar.bz2
http://www.multiprecision.org/mpc/download/mpc-0.8.1.tar.gz
2. 解压缩gcc包
tar jxvf gcc-4.8.1.tar.bz2
3. 解压缩其它三个包
这3个包在gcc-4.8.1/contrib/download_prerequisites中有指定。
tar jxf gmp-4.3.2.tar.bz2
tar jxf mpfr-2.4.2.tar.bz2
tar zxf mpc-0.8.1.tar.gz
mv gmp-4.3.2 gcc-4.8.1/gmp
mv mpc-0.8.1 gcc-4.8.1/mpc
mv mpfr-2.4.2 gcc-4.8.1/mpfr
放在一起后,就不用再单独编译这三个包了。这也是download_prerequisites中的做法。只不过它用的是软链接来实现。
4. 开始编译
gcc的编译不能直接在源文件目录下进行,而是需要建立一个新的文件夹,在它下面进行编译。好处是编译过程中生成的编译文件不会影响源文件的内容。如果编译失败或者需要重新编译新版本,只需要删除这个新建的目录即可。
mkdir gcc-4.8.1-build
cd gcc-4.8.1-build/
../gcc-4.8.1/configure --prefix=/usr/local/gcc-4.8.1 --enable-languages=c,c++ --enable-checking=release --disable-multilib
编译选项说明:--prefix指定gcc要安装到的路径,将来make install会安装到此指定文件夹。如果采取默认路径的话,可能会覆盖系统当前的gcc。如果想保留旧的gcc,需要设置--prefix参数。因为只用到C,C++,故只指定了这两种语言。mulitlib用于同时生成多个平台的代码。比如64 bit平台中,可以同时生产32 bit和64 bit两种格式。
make -j2 (本人机器为双核)
5. 安装
make install
6. 验证
gcc -v
RHEL6.4编译安装gcc4.8.1