Centos升级gcc4.4.7升级gcc4.8手记

来源:互联网 发布:nginx keepalived 编辑:程序博客网 时间:2024/05/20 21:58

Centos升级gcc4.4.7升级gcc4.8手记

出于需求系统自带的是gcc4.4.7,版本太低无法编译,被逼无奈只能升级gcc了,碰到很多坑,下载这个玩意就用了不少时间。

1
2
3
4
5
6
[root@168 ~]# gcc -v
Using built-inspecs.
Target: x86_64-redhat-linux
Configured with: ../configure--prefix=/usr--mandir=/usr/share/man--infodir=/usr/share/info--with-bugurl=http://bugzilla.redhat.com/bugzilla--enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre--enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
Thread model: posix
gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)

1.下载源码包

1
2
.wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.0/gcc-4.8.0.tar.bz2
.tar-jxvf  gcc-4.8.0.tar.bz2

2.下载编译所需依赖库

1.
2
3.
cd gcc-4.8.0
./contrib/download_prerequisites
cd..

3.建立编译输出目录

1
mkdir gcc-build-4.8.0

4.进入此目录,执行以下命令,生成makefile文件

1
2
.cd gcc-build-4.8.0
../gcc-4.8.0/configure--enable-checking=release --enable-languages=c,c++ --disable-multilib

5.编译

1
2
.# j 后面的是核心数,编译速度会比较快
.make-j4

6.安装

1
.sudo makeinstall

7.切换GCC到新版
确定新安装的GCC的路径,一般默认在/usr/local/bin下。可以先updatedb,然后locate gcc-4.8|tail找一下

1
.ls/usr/local/bin|grepgcc

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

1
update-alternatives --install/usr/bin/gccgcc /usr/local/bin/i686-pc-linux-gnu-gcc40

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

1
.gcc -v

[root@168 ~]# gcc -v
使用内建 specs。
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/i686-pc-linux-gnu/4.8.0/lto-wrapper
目标:i686-pc-linux-gnu
配置为:../gcc-4.8.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
线程模型:posix
gcc 版本 4.8.0 (GCC) 
[root@168 ~]# 

现在来说下坑吧,以上的步骤完全不需要画蛇添足,几个步骤不多不少,我之前对第二步进行单独的make,make check,结果悲剧了,各种报错。

0 0