redhat上用rpm包方式升级gcc


本人在前面编译kgdb的时候,由于内核配置的缘故(详见本人blog《在vmware上建立kgdb调试linux kernel源码的平台》文章),编译一直通不过,所以最早本人怀疑是RedHat上的gcc版本太低(3.2.2)所致。Gcc版本升级至3.4.6后发现不是版本的缘故。但是这样一来,倒是实践了一下gcc的rpm升级方式。这边就把gcc升级的rpm方式以大家分享一下:

  1,下载gcc3.4.6版本相应的rpm包
  ftp://mirror.switch.ch/mirror/scientificlinux/40rolling/i386/SL/RPMS/这个网址可以下载到相应的RPM包。需要下载的RPM包如下:

  cpp-3.4.6-8.i386.rpm
  gcc-3.4.6-8.i386.rpm
  glibc-2.3.4-2.36.i386.rpm
  glibc-common-2.3.4-2.36.i386.rpm
  glibc-devel-2.3.4-2.36.i386.rpm
  glibc-headers-2.3.4-2.36.i386.rpm
  glibc-kernheaders-2.4-9.1.100.EL.i386.rpm

  2,下载gcc3.4.6版本所需的binutils相应版本的源码包
  http://ftp.gnu.org/gnu/binutils/这个网址可以直接下载到需要的源码包,gcc3.4.6版本需要下载binutils-2.15.tar.bz2。

  3,编译安装binutils-2.15.tar.bz2
  #tar jvxf binutils-2.15.tar.bz2
  #cd binutils-2.15.
  #./configure
  #make
  #make install
  #ld –v

  GNU ld version 2.15

  看见了吗,我们的binutils已经成功升级成2.15版本了。

  4,安装rpm包

  安装顺序以及命令如下:
  #rpm –Uvh –--nodeps ---replacefiles glibc-kernheaders-2.4-9.1.100.EL.i386.rpm
  #rpm –Uvh–--nodeps ---replacefiles glibc-common-2.3.4-2.36.i386.rpm
  #rpm –Uvh–--nodeps ---replacefiles glibc-headers-2.3.4-2.36.i386.rpm
  #rpm –Uvh–--nodeps ---replacefiles glibc-devel-2.3.4-2.36.i386.rpm
  #rpm –Uvh–--nodeps ---replacefiles glibc-2.3.4-2.36.i386.rpm
  #rpm –Uvh–--nodeps ---replacefiles cpp-3.4.6-8.i386.rpm
  #rpm –Uvh–--nodeps ---replacefiles gcc-3.4.6-8.i386.rpm

  安装完毕之后,我们用命令可以查看相关版本

  #gcc ---version /* 查看gcc版本 */
  #/lib/libc.so.6 /* 查看glibc的版本 */

  我在这个时候写了个简单的hello.c的文件进行编译,发现提示说找不到stdio.h文件。晕倒,这个时候我重新安装glibc-headers-2.3.4-2.36.i386.rpm一次。在重新编译hello.c,以及linux内核。都成功了。至于为什么最后还需要重新安装一下glibc-headers-2.3.4-2.36.i386.rpm,可能是前面rpm包的安装顺序错了。后面我也没有具体深入了解。因为直接去搞我的kgdb了。

相关内容