对于刚接触linux的人来说安装gcc真不是那么简单的事,尤其是对configure命令不熟悉的那更是一个惨,
以前也有安装顺利的时候,只要 configure、 make、 make install 一切顺利,不顺利的时候,报错:少这个少那个
真是头疼的厉害。下面是我在redhat5.5 下碰到的一些问题。在这给那些安装gcc遇到麻烦的同学一点启发。
安装环境 gcc-4.7.0.tar.bz2 、redhat5.5 。
1、在http://gcc.gnu.org网上下载gcc压缩包。
2、解压gcc压缩包:
1)我把压缩包放到 /usr/local/src 文件下
2)解压 bzcat gcc-4.7.0.tar.bz2 | tar xvf - (如下载的是别的类型的压缩包,那就更换压缩命令解压就ok这个都懂的)
3)在src下多了个gcc-4.7.0文件夹(这是源文件)
4)创建安装路径 mkdir /usr/local/gcc (这是个临时目录,用于临时存放编译文件的目录 )
5)创建安装路径 mkdir /usr/local/gcc-4.7.0 (这个是目标目录,将会把gcc 安装到该目录中)
6)切换到 安装目录下 cd /usr/local/gcc
7) configure 进行软件与系统配置(这个是关键,问题基本都出在这里面,如实在解决不了请 认真查阅configure命令)
../gcc-4.7.0/configure --prefix=/usr/local/gcc --enable-threads=posix --disable-checking --enable--long-long
--host=i386-redhat-linux--with-system-zlib --enable-languages=c,c++,java
》warning:If you wanted to set the --build type, don't use --host
出现该警告 干脆直接不要 --host=i386-redhat-linux 设置了 让其默认
》error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+
这说明你电脑少环境 gmp 、mpfr 、mpc 如没出现该错误 恭喜你可以跳过该问题
在这介绍 gmp 、mpfr 、mpc 的安装
gmp 下载地址 ftp://ftp.gnu.org/gnu/gmp/gmp-5.0.1.tar.bz2下载gmp-5.0.1.tar.bz2
mpc 下载地址 http://www.multiprecision.org/mpc
mpfr 下载地址 http://ftp.gnu.org/gnu/mpfr/
安装顺序 先安装 gmp 在安装mpfr 再安装mpc 这三个文件版本是有关联 的 例如 mpc 0.9 与1.0.1 版本都要求mpfr 版本在2.4.2
以上,在安装的时候注意点,万一版本不符合,根据提示下载相应的版本。
解压 gmp: tar jxvf gmp-5.0.1.tar.bz2 得到gmp-5.0.1 文件 ,在该文件的同级目录下创建一个临时的编译文件temp
# cd temp 文件中中或者直接打开该文件夹 在该文件夹中打开终端 执行下面命令行
#../gmp-5.0.1/configure --prefix=/usr/local/gmp-5.0.1
#make
# sudo make install
这是gmp安装完成 ----------------------------------------------------------------------------------------------------------------------------
在gmp-5.0.1 文件夹同级目录下 解压 mpfr: tar jxvf mpfr-2.4.2.tar.bz2 得到mpfr-2.4.0文件夹,再次切进到temp目录 执行
#../mpfr-2.4.2/configure --prefix=/usr/local/mpfr-2.4.2 --with-gmp=/usr/local/gmp-5.0.1
# make
# sudo make install
这mpfr 安装完成--------------------------------------------------------------------------------------------------------------------------------
在gmp-5.0.1 文件夹同级目录下 解压 mpc: tar zxvf mpc-0.9.tar.gz 得到mpfr-2.4.0文件夹,再次切进到temp目录 执行
#../mpc-0.9/configure --prefix=/usr/local/mpc-0.9 --with-gmp=/usr/local/gmp-5.0.1 --with-mpfr=/usr/local/mpfr-2.4.2
# make
# sudo make install
这mpc安装完成--------------------------------------------------------------------------------------------------------------------------------
导入环境变量 # export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc-0.9/lib:/usr/local/gmp-5.0.1/lib:/usr/local/mpfr-2.4.2/lib
8)在先前第4部创建的文件夹中打开终端 #../src/gcc-4.7.0/configure --prefix=/usr/local/gcc-4.7.0 --enable-threads=posix --disable-checking --disable-multilib
--enable-languages=c,c++ --with- gmp=/usr/local/gmp-5.0.1 --with-mpfr=/usr/local/mpfr-2.4.2 --with-mpc=/usr/local/mpc-0.9
9)#make 这里时间有点长 慢慢等(苦命啊 希望别在报错了 如报错 是以下错误 那你幸运了 )
》error:
“checking for suffix of object files... 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 `/tmp/gcc
make[1]: *** [stage1-bubble] Error 2
make[1]: Leaving directory `/tmp/gcc
make: *** [bootstrap] Error 2
具体报错原因我也不说了 直接看怎么解决
在导入 一次 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc-0.9/lib:/usr/local/gmp-5.0.1/lib:/usr/local/mpfr-2.4.2/lib
》》 Configure:current value: -g -O2 ”形式,
就是先前的值和现在的不一样。这是由于缓存的问题需要把缓存文件产出重新编译
10)#make install ok 完成安装
11)配置
GCC 4.7.0的所有文件,包括命令文件(如gcc、g++)、库文件等都在${destdir}目录下分别存放,如命令文件放在bin目录下、库文件在 lib下、头文件在include下等。由
于命令文件和库文件所在的目录还没有包含在相应的搜索路径内,所以必须要作适当的设置之后编译器才能顺利地找到并使用它们。
把安装目录的bin放在环境变量PATH中。网上有种 用符号连接的方式实现,这样做的好处是我仍然可以使用系统上原来的旧版本的GCC编译器。
首先,查看原来的gcc所在的路径:
# which gcc
在我的系统上,上述命令显示:/usr/bin/gcc。因此,原来的gcc命令在/usr/bin目录下。我们可以把GCC 4.7.0中的gcc、g++、gcj等命令在/usr/bin目录下分别做一个符
号连接:
# cd /usr/bin
# ln -s /usr/local/gcc-4.7.0/bin/gcc gcc470
# ln -s /usr/local/gcc-4.7.0/bin/g++ g++470
# ln -s /usr/local/gcc-4.7.0/bin/gcj gcj470
这样,就可以分别使用gcc470、g++470、gcj470来调用GCC 4.1.2的gcc、g++、gcj完成对C、C++、JAVA程序的编译了。
同时,仍然能够使用旧版本的GCC编译器中的gcc、g++等命令。
将/usr/local/gcc-4.7.0}/lib路径添加到环境变量LD_LIBRARY_PATH中,
例如,如果GCC 4.7.0安装在/usr/local/gcc-4.7.0目录下,在RH Linux下可以直接在命令行上执行
# export LD_LIBRARY_PATH=/usr/local/gcc-4.7.0/lib
最好添加到系统的配置文件中,这样就不必要每次都设置这个环境变量了,在文件$HOME/.bash_profile中添加下面两句:
LD_LIBRARY_PATH=/usr/local/gcc-4.1.2/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
重启系统设置生效,或者执行命令
# source $HOME/.bash_profile