出于需求系统自带的是gcc4.4.7,版本太低无法编译,被逼无奈只能升级gcc了,碰到很多坑,下载这个玩意就用了不少时间。
1
2
3
4
5
6
|
[root@168 ~]# gcc -v
Using built- in specs.
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 make install
|
7.切换GCC到新版
确定新安装的GCC的路径,一般默认在/usr/local/bin下。可以先updatedb,然后locate gcc-4.8|tail找一下
1
|
.ls /usr/local/bin | grep gcc
|
添加新GCC到可选项,倒数第三个是名字,倒数第二个参数为新GCC路径,最后一个参数40为优先级,设大一些之后就自动使用新版了
1
|
update-alternatives -- install /usr/bin/gcc gcc /usr/local/bin/i686-pc-linux-gnu-gcc 40
|
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,结果悲剧了,各种报错。