1、下载gcc 4.8.1源码包:
http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-4.8.1/gcc-4.8.1.tar.bz2
2、解压:
tar -jxvf gcc-4.8.1.tar.bz2
3、下载编译所需的依赖包:
这个步骤有两种方式完成:
a) 如果Linux有网络连接,直接这样:
cd gcc-4.8.1
./contrib/download_prerequisites
cd ..
b) 如果Linux没有网络连接(我主机和虚拟机是Host-only,不能联网,所以另外想办法),则用Windows上网下载这几个包:
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/contrib/download_prerequisites脚本里面的版本下载。
然后解压并移动到gcc-4.8.1下面:
tar -xjf gmp-4.3.2.tar.bz2
tar -xjf mpfr-2.4.2.tar.bz2
tar -xzf 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源码下面一起编译(事实上这也是gcc-4.8.1/contrib/download_prerequisites脚本的做法,个人感觉更简洁些)。
4、新建目录用于存放编译结果:
mkdir gcc-build-4.8.1
5、进入新目录,并执行configure命令,产生makefile:
cd gcc-build-4.8.1
../gcc-4.8.1/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
具体选项不多解释,大家可以自己查看,我只用到c和c++,所以只编译这两种语言的编译器。
6、编译:
make -j4
开4个线程同时编译,要是有8核就更爽了~。
备注:我编译的时候遇到死循环,原因是机器的系统时间比较gcc 4.8.1文件的时间要早,编译的时候就出现死循环,编译不成功。
7、安装:
sudo make install
8、大功告成,检查版本:
g++ --version
g++ (GCC) 4.8.1
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
还需要一个步骤更新一下libstdc++.so.6,否则可能会出现/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found的问题(编译运行:http://www.cplusplus.com/reference/functional/bind/的bind_example),更新步骤如下:
1. #cp ~/gcc-build-4.8.1/prev-i686-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.18 /usr/lib
2. #ln -sf /usr/lib/libstdc++.so.6.0.18 /usr/lib/libstdc++.so.6