当前环境:centos6.5-x86_64

先安装gcc和gcc-c++

[root@localhost ~]# rpm -qa | grep gcc
libgcc-4.4.7-11.el6.x86_64
[root@localhost ~]# yum install -y gcc gcc-c++       #安装gcc,gcc-c++才可以编译安装后面高版本gcc
[root@localhost ~]# rpm -qa | grep gcc
libgcc-4.4.7-11.el6.x86_64
gcc-4.4.7-11.el6.x86_64
gcc-c++-4.4.7-11.el6.x86_64

1.下载源码包

wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.bz2
解压: tar -jxvf gcc-4.8.2.tar.bz2

2.下载编译所需依赖库

 1)可以使用它自带的脚本

cd gcc-4.8.2
./contrib/download_prerequisites 
cd ..                                 #有时候会很慢很慢

 2)查看脚本文件并根据脚本文件手动来操作

MPFR=mpfr-2.4.2
GMP=gmp-4.3.2
MPC=mpc-0.8.1

wget ftp://gcc.gnu.org/pub/gcc/infrastructure/$MPFR.tar.bz2 || exit 1
tar xjf $MPFR.tar.bz2 || exit 1
ln -sf $MPFR mpfr || exit 1

wget ftp://gcc.gnu.org/pub/gcc/infrastructure/$GMP.tar.bz2 || exit 1
tar xjf $GMP.tar.bz2  || exit 1
ln -sf $GMP gmp || exit 1

wget ftp://gcc.gnu.org/pub/gcc/infrastructure/$MPC.tar.gz || exit 1
tar xzf $MPC.tar.gz || exit 1
ln -sf $MPC mpc || exit 1

rm $MPFR.tar.bz2 $GMP.tar.bz2 $MPC.tar.gz || exit 1

手动用多线程下载工具下载以下依赖包传到要安装的机器上:

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

然后解压并移动到gcc-4.8.1下面:

tar xf gmp-4.3.2.tar.bz2

tar xf mpfr-2.4.2.tar.bz2

tar xf mpc-0.8.1.tar.gz

mv gmp-4.3.2 gcc-4.8.1/gmp

mv mpfr-2.4.2 gcc-4.8.1/mpfr

mv mpc-0.8.1 gcc-4.8.1/mpc

这样的做法好处是,不用单独编译gmp、mpfr和mpc三个包,放在gcc源码下面一起编译,这也是download_prerequisites脚本的做法。

3.进入此目录,执行以下命令,生成makefile文件
cd  gcc-build-4.8.2
./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
4.编译

  make -j 4                                                #-j 4 表示make编译时使用4线程,减少编译所需的时间;默认情况下,make并没有将多核处理器的性能发挥到极限。相反,它只使用了其中一个核心。

这次我所用的机器是DELL R720 6核心 12线程 使用-j 6和-j 10的速度差不多都是15分钟左右,-j 4半个小时左右

如果编译成功,则时间是比较长的,半个小时左右,所以如果你看它一直在输出没有立刻停下来,应该很开心! 
5.安装
make install
6.切换GCC到新版(可省略)
确定新安装的GCC的路径,一般默认在/usr/local/bin下。

添加新GCC到可选项,倒数第三个是名字,倒数第二个参数为新GCC路径,最后一个参数40为优先级,设大一些之后就自动使用新版了

update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/x86_64-unknown-linux-gnu-gcc-4.8.2 40

7.确认当前版本已经切换为新版

gcc -v