CentOS6.6源码编译升级GCC至4.8.2

升级前提

源码编译须要至少要有一个可用的gcc编译器。c++

能够用过yum自动安装或者手动下载rpm包安装。shell

经过yum能够看到至少须要下面这些安装包,因此能够到许多rpm package站点中搜索下载相应的rpm包,不过版本要搞对了,这个yum搜出来的版本是针对4.4.7的。因此须要什么版本gcc就寻找什么版本对应的依赖包。如今的rpm站点都会说明这个软件包依赖哪些软件包,被哪些软件包依赖,很是方便,不过找起来仍是比较耗时的。apache

编译安装GCC4.8.2

下载gcc4.8.2源码包bash

1 curl -O ftp://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.gz;

首先须要下载gcc安装所依赖的mpc,mpfr,gmp包,gcc自带了一个脚本帮咱们下载并创建好连接等gcc编译时一块儿编译,你也能够本身去下载依赖包。curl

1 tar zxf gcc-4.8.2.tar.gz
2 cd gcc-4.8.2 
3 ./contrib/download_prerequisites

打开上面的download_prerequisites能够看到,它首先下载了3个包,因此当发现脚本卡在下载的地方可能就是没法访问的缘由了,这是须要去找一个新的下载地址,方法很简单,google文件名就能够找到不少。ui

开始编译gccgoogle

mkdir gcc-build-4.8.2
cd gcc-build-4.8.2
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
make
make install

安装完成后若是发现gcc -v版本没有变化,就再执行如下启动脚本。url

1 source /etc/profile
2 source ~/.bash_profile

安装完以后的问题

安装完以后虽然敲gcc g++ c++ 等版本都更新到了4.8.2但其实电脑里里面至少存在两个版本的gccspa

whereis或者where能够看到有多个gcc文件,which命令能够看到命令gcc对应的是usr/local/bin/gcc,而原来的gcc执行文件在/usr/bin/gcc,执行/usr/bin/gcc -v能够看到gcc的版本仍是4.4,这虽然问题不大,但有些shell脚本或者Makefile中直接写的是gcc的绝对路径,因此颇有可能会使用旧的gcc版本去编译,从而致使失败。因此仍是须要将原来的gcc覆盖掉。最开始想的办法是将、usr/bin/gcc软连接到usr/local/bin/gcc,对于g++,c++等也作类似的处理3d

这种方式看似解决了问题,但总以为不靠谱,直到最近编译apache thrift发现仍是不太对。因此考虑在安装gcc的时候是否能够指明安装路径。

执行

1 ./configure --help 

能够看到确实是有这样的选项的

因此只须要在configure的时候带上 --prefix=/usr 就能够将gcc编译安装到usr下了 

相关文章
相关标签/搜索