1. 下载gcc-4.6.1安装包
gcc各版本浏览地址:http://ftp.gnu.org/gnu/gcc/
gcc-4.6.1浏览地址:http://ftp.gnu.org/gnu/gcc/gcc-4.6.1/
gcc-4.6.1下载地址:http://ftp.gnu.org/gnu/gcc/gcc-4.6.1/gcc-4.6.1.tar.bz2
2. 将gcc-4.6.1.tar.bz2放到/opt文件夹下解压
[root@duan ~]# cd /opt
[root@duan opt]# tar xjvf gcc-4.6.1.tar.bz2
3. 创建安装目录
[root@duan opt]# mkdir/usr/local/gcc-4.6.1/
4. 进入安装目录
[root@duan opt]# cd /usr/local/gcc-4.6.1/
5. 配置安装文件
[root@duan gcc-4.6.1]# /opt/gcc-4.6.1/configure--prefix=/usr/local/gcc-4.6.1
Error:configure: error: Building GCCrequires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+.Try the --with-gmp, --with-mpfrand/or --with-mpc options to specifytheir locations
分析:
要安装gcc需要GMP、MPFR、MPC这三个库,可从ftp://gcc.gnu.org/pub/gcc/infrastructure/下载相应的压缩包。由于MPFR依赖GMP,而MPC依赖GMP和MPFR,所以要先安装GMP,其次MPFR,最后才是MPC。这里三个库我用的版本分别是gmp4.3.2,mpfr2.4.2和mpc0.8.1,都放在/opt文件夹下。
① 安装gmp4.3.2
[root@duan opt]# tar jxvf gmp-4.3.2.tar.bz2
[root@duanopt]# mkdir/usr/local/gmp-4.3.2
[root@duanopt]# cd/usr/local/gmp-4.3.2
[root@duan gmp-4.3.2]# /opt/gmp-4.3.2/configure --prefix=/usr/local/gmp-4.3.2
[root@duan gmp-4.3.2]# make (编译)
[root@duan gmp-4.3.2]# make install (执行安装)
② 安装mpfr2.4.2
[root@duan opt]# tar jxvf mpfr2.4.2.tar.bz2
[root@duan opt]# mkdir /usr/local/mpfr-2.4.2
[root@duan opt]# cd /usr/local/mpfr-2.4.2
[root@duan mpfr-2.4.2]# /opt/mpfr-2.4.2/configure --prefix=/usr/local/mpfr-2.4.2--with-gmp=/usr/local/gmp-4.3.2
(注意配置的时候要把依赖关系选项加进去)
[root@duan mpfr-2.4.2]# make
[root@duan mpfr-2.4.2]# make install
③ 安装mpc0.8.1
[root@duan opt]# tar jxvf gmpc0.8.1.tar.bz2
[root@duan opt]# mkdir /usr/local/mpc-0.8.1
[root@duan opt]# cd /usr/local/mpc-0.8.1
[root@duan mpc-0.8.1]# /opt/mpc-0.8.1/configure--prefix=/usr/local/mpc-0.8.1 --with-gmp=/usr/local/gmp-4.3.2--with-mpfr=/usr/local/mpfr-2.4.2
[root@duan mpc-0.8.1]# make
[root@duan mpc-0.8.1]# make install
④ 再次安装GCC 配置安装选项
[root@duan mpc-0.8.1]# cd /usr/local/gcc-4.6.1
[root@duan gcc-4.6.1]# /opt/gcc-4.6.1/configure--prefix=/usr/local/gcc-4.6.1 -enable-threads=posix -disable-checking-disable-multilib -enable-languages=c,c++ --with-gmp=/usr/local/gmp-4.3.2--with-mpfr=/usr/local/mpfr-2.4.2 --with-mpc=/usr/local/mpc-0.8.1
6. 编译安装文件
[root@duan opt]# cd/usr/local/gcc-4.6.1/
[root@duan gcc-4.6.1]# make
7. 执行安装GCC
[root@duan gcc-4.6.1]# make install
8. 建立软链接
[root@duan /]# sudo ln -s /usr/local/gcc-4.6.1/bin/gcc gcc461
[root@duan /]# sudo ln -s/usr/local/gcc-4.6.1/bin/g++ g++461
9. 添加环境变量
打开/etc目录下的bashrc文件添加如下代码:
LD_LIBRARY_PATH=:/usr/local/mpc-0.8.1/lib:/usr/local/gmp-4.3.2/lib:/usr/local/mpfr-2.4.2/lib:/usr/local/gcc-4.6.1/lib
export LD_LIBRARY_PATH
编译过程中出现的错误如下:
ISSUE#1
checking for suitable m4... configure: error: No usable m4 in $PATH or/usr/5bin (see config.log for reasons).
Solution:
#sudo apt-get install m4ISSUE#2
In file included from /usr/include/stdio.h:28:0,
from../../../../gcc-4.7.0/libgcc/../gcc/tsystem.h:88,
from../../../../gcc-4.7.0/libgcc/libgcc2.c:29:
/usr/include/features.h:324:26: fatal error: bits/predefs.h: Nosuch file or directory
compilation terminated.
make[5]: *** [_muldi3.o] Error 1
Analysis:
Use 'locate bits/predefs.h' to find the path of this header. (in'/usr/include/x86_64-Linux-gnu')
Solution:
#export C_INCLUDE_PATH=/usr/include/i386-linux-gnu &&export CPLUS_INCLUDE_PATH=$C_INCLUDE_PATHISSUE#3
In file included from /usr/include/features.h:389:0,
from /usr/include/stdio.h:28,
from ../../../../gcc-4.7.0/libgcc/../gcc/tsystem.h:88,
from ../../../../gcc-4.7.0/libgcc/libgcov.c:29:
/usr/include/i386-linux-gnu/gnu/stubs.h:7:27: fatal error:gnu/stubs-32.h: No such file or directory
compilation terminated.
make[5]: *** [_gcov.o] Error 1
Analysis:
Related to libc multilib, disable it with '--disable-multilib'should work.
Solution:
add '--disable-multilib' and 'configure' again, then run 'make'.ISSUE#4
/usr/bin/ld: cannot find crti.o: No such file or directory
collect2: error: ld returned 1 exit status
make[3]: *** [libgcc_s.so] Error 1
make[3]: *** Waiting for unfinished jobs....
Analysis:
Use 'locate crti.o' to find this file. (in'/usr/lib/i386-linux-gnu/crti.o') Set LIBRARY_PATH (LDFLAGS)
Solution:
#export LIBRARY_PATH=/usr/lib/i386-linux-gnu