由于服务器的编译需求,需要使用c++11,所以需要升级gcc,在升级过程中也遇到了一些问题。写下来供大家参考。
升级
1.准备工作
下载gcc安装包,当前最高版本为4.9.2
gcc 4.9.2 下载地址:
日本源:http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-4.9.2/gcc-4.9.2.tar.gz
netgull:http://www.netgull.com/gcc/releases/gcc-4.9.2/gcc-4.9.2.tar.gz
wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-4.9.2/gcc-4.9.2.tar.gz
2.解压
tar -zxvf gcc-4.9.2.tar.gz
cd gcc-4.9.2
3.下载gcc编译的依赖项
./contrib/download_prerequisites
这一步,会启动自动下载,执行速度取决于您的服务器与下载服务器的链接速度。
小技巧:如果网络不稳定,可以选择手动下载依赖项(看下download_prerequisites文件),并将下载的5个依赖文件放到gcc-4.9.2目录下,然后编辑download_prerequisites文件,将几处wget语句注释掉,保存,然后再运行一次。
4.运行configure并编译安装
mkdir gcc-build-4.9.2
cd gcc-build-4.9.2
../configure --prefix=/usr -enable-checking=release -enable-languages=c,c++ -disable-multilib
make -j 2 && make install
cd ../../
小技巧:make -j 2中的数字为指定cpu的核心数,可以更快的执行编译操作。
编译安装是一个很漫长的过程,因服务器性能而不同所用的时间会有不同。我得服务器大概执行了2个小时左右。
遇到问题
问题1:
编译过程中发生错误导致编译中断
build/genattrtab ../.././gcc/config/i386/i386.md insn-conditions.md \
-Atmp-attrtab.c -Dtmp-dfatab.c -Ltmp-latencytab.c
make[3]: *** [s-attrtab] Killed
make[3]: Leaving directory `/usr/src/gcc-4.9.2/host-x86_64-unknown-linux-gnu/gcc'
make[2]: *** [all-stage1-gcc] Error 2
make[2]: Leaving directory `/usr/src/gcc-4.9.2'
make[1]: *** [stage1-bubble] Error 2
make[1]: Leaving directory `/usr/src/gcc-4.9.2'
make: *** [all] Error 2
原因是swap不存在或者swap分区不足导致,可以通过正价swap分区的方法解决: