CentOS 5.5 手动安装 GCC4.6.2


从GCC官网下载最新版本的GCC4.6.2

http://gcc.gnu.org/

国内镜像地址:
http://mirrors.ustc.edu.cn/gnu/gcc/

首先在配置gcc的过程中会出现错误:
# ./configure --prefix=/usr/local/gcc-4.6.2
configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+.
说明要安装gcc需要GMP、MPFR、MPC这三个库
官网下载地址:
http://gmplib.org/
http://www.mpfr.org/
http://www.multiprecision.org/index.php?prog=mpc

由于MPFR依赖GMP,而MPC依赖GMP和MPFR,所以要先安装GMP,其次MPFR,最后才是MPC。这里三个库我用的版本分别是gmp-5.0.3,mpfr-3.1.0和mpc-0.9。
依次解压这3个压缩包

安装gmp-5.0.3
# cd gmp-5.0.3
# ./configure --prefix=/usr/local/gmp-5.0.3
# make && make install && make clean

安装mpfr-3.1.0
# cd mpfr-3.1.0
# ./configure --prefix=/usr/local/mpfr-3.1.0 --with-gmp=/usr/local/gmp-5.0.3
# make && make install && make clean

安装mpc-0.9
#cd mpc-0.9
# ./configure --prefix=/usr/local/mpc-0.9 --with-gmp=/usr/local/gmp-5.0.3 --with-mpfr=/usr/local/mpfr-3.1.0
# make && make install && make clean


安装好这三个库之后,就可以正式开始安装gcc了。
进入gcc源码目录
gcc的配置选项有很多,具体可以参考gcc源文件目录下的安装说明。这里只安装了c和c++的编译器。(如果不指定编译的语言,则会在make时不通过,爆出某些文件找不到等错误,所以还是建议在此指定编译语言为c,c++)然后开始make编译。为保险起见,需要在环境变量LD_LIBRARY_PATH添加前面三个库的位置,键入以下命令:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc-0.9/lib:/usr/local/gmp-5.0.3/lib:/usr/local/mpfr-3.1.0/lib
然后重新make编译,在经过漫长的1小时等待后,终于编译完成。


# ./configure --prefix=/usr/local/gcc-4.6.2 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local/gmp-5.0.3 --with-mpfr=/usr/local/mpfr-3.1.0 --with-mpc=/usr/local/mpc-0.9
# make && make install && make clean


至此gcc就全部安装完成了。
不过目前还不能使用新版本的gcc,因为新版的可执行文件还没加到命令的搜索路径中。在这里我为新版的gcc和g++命令分别建立了一个软链接。进入/usr/bin目录后,键入如下命令建立软链接。


sudo ln -s /usr/local/gcc-4.6.2/bin/gcc gcc462
sudo ln -s /usr/local/gcc-4.6.2/bin/g++ g++462
这样我使用新版本gcc的时候就可以用gcc462和g++462命令,同时也可使用原来的gcc编译程序。当然这里也可以直接将/usr/bin目录下gcc,g++命令重新链接到新版本的gcc可执行文件。在正式使用之前还有最后一个工作要做,就是将前面安装的GCC-4.6.2库的路径加进环境变量LD_LIBRARY_PATH中,不然在编译程序的时候会出错。
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/gcc-4.6.2/lib


由于export方式在重启后失效,所以需要编辑/etc目录下的bashrc文件配置shell环境。
在这个文件中添加以下语句:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc-0.9/lib:/usr/local/gmp-5.0.3/lib:/usr/local/mpfr-3.1.0/lib:/usr/local/gcc-4.6.2/lib
export LD_LIBRARY_PATH


以上方法不佳,可以使用下面的方法:
vi /etc/ld.so.conf
添加
/usr/local/mpc-0.9/lib
/usr/local/gmp-5.0.3/lib
/usr/local/mpfr-3.1.0/lib
/usr/local/gcc-4.6.2/lib
保存退出然后执行ldconfig使更改生效


另外使用gcc-4.6.2还有如下方法:
备份原始的gcc 和 g++
# cp /usr/bin/gcc /usr/bin/gcc.bak
# cp /usr/bin/g++ /usr/bin/g++.bak


建立软链接
# cd /usr/bin
# ln -s /usr/local/gcc-4.6.2/bin/gcc gcc
# ln -s /usr/local/gcc-4.6.2/bin/g++ g++

使用后还原即可

出错处理:
make过程中报错
checking for suffix of object files... configure: error: in `/data/src/gcc/gcc-4.6.2/x86_64-unknown-linux-gnu/libgcc':
configure: error: cannot compute suffix of object files: cannot compile
See `config.log' for more details.
make[2]: *** [configure-stage1-target-libgcc] Error 1
make[2]: Leaving directory `/data/src/gcc/gcc-4.6.2'
make[1]: *** [stage1-bubble] Error 2
make[1]: Leaving directory `/data/src/gcc/gcc-4.6.2'
make: *** [all] Error 2

原因修改ld.so.conf后未执行ldconfig 新加的库未起效

推荐阅读:

Ubuntu 12.04嵌入式交叉编译环境arm-linux-GCC搭建过程图解

Ubuntu 12.10安装交叉编译器arm-none-linux-gnueabi-GCC

Ubuntu下Vim+GCC+GDB安装及使用

Ubuntu下两个GCC版本切换

相关内容