因为项目需要把linux版本降为redhat9,发现gcc是3.2版本的,将原来的代码改好编译,总是返回multiple definition of ' __i686.get_pc_thunk.bx'错误,链接器返回'ld returned 1 exit statux'错误,查阅网上资料说是gcc版本低导致的问题,于是将gcc升级到3.4.6版本,记录以下是过程,以备以后查阅。
1,下载gcc3.4.6版本相应的rpm包
ftp://mirror.switch.ch/mirror/scientificlinux/40rolling/i386/SL/RPMS/ 这个网址可以下载到相应的RPM包。需要下载的RPM包如下:
cpp-3.4.6-11.i386.rpm
gcc-3.4.6-11.i386.rpm
glibc-2.3.4-2.43.i386.rpm
glibc-common-2.3.4-2.43.i386.rpm
glibc-devel-2.3.4-2.43.i386.rpm
glibc-headers-2.3.4-2.43.i386.rpm
glibc-kernheaders-2.4-9.1.103.EL.i386.rpm
2,下载gcc3.4.6版本所需的binutils相应版本的源码包
http://ftp.gnu.org/gnu/binutils/这个网址可以直接下载到需要的源码包,我这里使用的是binutils-2.17.tar.bz2,看网上资料,升级gcc3.4.6最少需要2.15版本的binutils。
3,编译安装binutils-2.17.tar.tar
#tar jvxf binutils-2.17.tar.tar
#cd binutils-2.17
#./configure
#make
#make install
新建终端执行#ld -v
GNU ld version 2.17
我们的binutils已经成功升级成2.17版本了。
4,安装rpm包
安装顺序以及命令如下:
#rpm -Uvh --nodeps --replacefiles glibc-kernheaders-2.4-9.1.103.EL.i386.rpm
#rpm -Uvh --nodeps --replacefiles glibc-common-2.3.4-2.43.i386.rpm
#rpm -Uvh --nodeps --replacefiles glibc-headers-2.3.4-2.43.i386.rpm
#rpm -Uvh --nodeps --replacefiles glibc-devel-2.3.4-2.43.i386.rpm
#rpm -Uvh --nodeps --replacefiles glibc-2.3.4-2.43.i386.rpm
#rpm -Uvh --nodeps --replacefiles cpp-3.4.6-11.i386.rpm
#rpm -Uvh --nodeps --replacefiles gcc-3.4.6-11.i386.rpm
安装完毕之后,我们用命令可以查看相关版本
#gcc -v/* 查看gcc版本 */
5,安装完成之后,重新编译原来出错的代码,编译通过。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/w0911h/archive/2009/08/04/4406752.aspx
lvncwet 于 2009-08-26 00:02:54发表:
友情支持