本人在前面编译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相应版本的源码包
这个网址可以直接下载到需要的源码包,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了。
redhat上用rpm包方式升级gcc
内容版权声明:除非注明,否则皆为本站原创文章。