`
wang_2011_ying
  • 浏览: 144675 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

在RedHat AS4 下面安装gcc 4.3.2

阅读更多
开发需要提供一个RedHat4.6 GCC4.3.2的环境,下面说说我的安装过程吧:

由于,我们的集群中RedHat是EL5.5的,所以,还是在老的机器(RedHat AS4)上装吧,因此,我只需要安装一个GCC就好。

安装第一天:
使用RPM包安装,可是它需要的依赖包太多了,而且依赖包与版本又有很大关系。。折腾了一天,决定放弃。。

安装第二天:
1.在官网上下载一个gcc-4.3.2.tar.gz
tar -xzvf gcc-4.3.2.tar.gz

2.GCC的安装需要两个软件,分别是:gmp-4.2.1+和mpfr-2.3.0+
因此,我下载的是gmp-4.2.2.tar.bz2和mpfr-2.3.1.tar.gz以及mpfr的补丁文件patches
tar -xjf gmp-4.2.2.tar.bz2
tar -xzvf mpfr-2.3.1.tar.gz

由于mpfr依赖gmp,所以我们先来安装它。
注:由于我的redhat是64位的,所以采用以下命令,否则配置时提示:could not find libgmp or use a different ABI
cd gmp-4.2.2
./configure --prefix=/usr --host=x86_64-redhat-linux ABI=64 //指定gmp安装在/usr目录下,默认是安装在/usr/local下面,ABI=64代表是操作系统是64位的。如果ABI没有指定的话,在安装mpfr时会报错!
make
make check
make install
cd ..

修改/etc/profile文件,添加:
export LD_LIBRARY_PATH=/usr/lib:$LD_LIBRARY_PATH
下面来安装mpfr
cd mpfr-2.3.1
patch -N -Z -p1 < ../patches
./configure --prefix=/usr --with-gmp-include=/usr/include --with-gmp-lib=/usr/lib
make
make check
make install
cd ..

其中,patches文件是我们从http://www.mpfr.org/mpfr-2.3.1/patches网站上下载的,注意,不能手动修改该文件,否则在运行patch文件时,会生成一个后缀为rej的文件,该现象说明打补丁出错!不同版本的mpfr对应的patches文件是不同的,可以自己去官网上下载对应版本的补丁文件。
在配置时,最好指出gmp的安装目录,否则会出现“undefined reference to '__gmp_get_memory_functions'”问题。如果不指出,系统默认找/usr/lib下的库文件和/usr/include下的头文件。如果gmp安装在/usr目录下,在配置时,以上两个参数可以不指定,如果安装在其他目录下,需要指定
3.安装GCC
cd gcc-4.3.2
./configure --prefix=/usr --with-mpfr=/usr --with-gmp=/usr --enable-languages=c,c++,java --enable-shared --enable-threads=posix --disable-checking  //最好不要指定主机信息,如果指定不对,会出错
make  //经过2个小时的编译,终于完成
make check
make install
cd ..

4.查看gcc版本,如下图:


第二次装gcc心得:

gcc需要gmp,mpfr,mpc这三个依赖包,依次安装这些工具的时候,记得要指定已经安装的包的库文件和头文件路径,(如,--with-gmp-include=/usr/local/include --with-gmp-lib=/usr/local/lib)。

安装过程中出现的问题如下:
1、在安装mpc时,需指定gmp和mpfr的库文件和头文件路径。在编译mpc时出现“libmpc.so : undefined reference to '_gmpn_sqr_n';libmpc.so : undefined reference to '_gmp_rand”问题。
解决方法:更换了更高版本的mpc,编译通过。不过具体这是什么问题造成的还不清楚,请过知道的童鞋告诉一下~
2、在安装gcc时也需要指定三个依赖包的安装路径。
在编译gcc的时候出现了:configure: error: cannot compute suffix of object files: cannot compile
解决方法:
将已经安装的三个依赖包的库文件的路径加入到lD_LIBRARY_PATH中。


按照以上方法编译gcc,很不幸,问题依然没有结束,在gcc编译1.5个小时的时候,出现了“找不到autogen命令”
于是乎,在安装autogen时,需要依赖guile,但是,guile又依赖6个包,包含:libgmp,libiconv,libintl,libltdl,libunistring,libffi
个人认为安装libffi比较麻烦,在配置方法:
./configure CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib
根据提示,还配置了几个环境变量,具体名字不记得了。
依赖包安装好了之后,开始安装guile,在安装guile时,总是出现“gcc:cannot specify -o with -c or -S with multuple files”这个问题。于是,更换了一个较低版本的guile,编译成功,接下来autogen工具也比较顺利!
回来继续编译gcc,希望这次能成功吧!待续。。。
  • 大小: 6.4 KB
分享到:
评论
2 楼 wang_2011_ying 2013-07-05  
laoyun_1 写道
哈哈,你终于又上线了。。。。现在在做android开发,还是做什么啊?

是啊,很久没有来了,之前一直忙着找工作。。。
目前,已经不再研究Android了,在做Linux下的开发与维护~
1 楼 laoyun_1 2013-07-05  
哈哈,你终于又上线了。。。。现在在做android开发,还是做什么啊?

相关推荐

Global site tag (gtag.js) - Google Analytics