Linux升级gcc到4.9.2

/ 0评 / 4

由于服务器的编译需求,需要使用c++11,所以需要升级gcc,在升级过程中也遇到了一些问题。写下来供大家参考。

升级

1.准备工作

下载gcc安装包,当前最高版本为4.9.2

官网:https://gcc.gnu.org/

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分区的方法解决:

参考:Linux手动添加Swap空间

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注