linux安装gcc2.95.3,gcc-2.95.3安装过程

本文记录了一位开发者安装和配置低版本GCC 2.95.3的过程,包括下载、解压、配置、编译和安装的详细步骤。在配置过程中遇到的问题,如线程库导致的编译错误,通过删除线程支持和应用补丁来解决。最终成功安装并手动修改了编译器名称。此过程旨在研究旧版编译器与现代编译器在生成汇编代码上的差异。
摘要由CSDN通过智能技术生成

背景交待:

1、正在研究ld、栈帧相关的东西;

2、使用高版本编译器得到的添加了诸多内容,不适合研究;

3、gcc的2.95.3版本并不是最低的,但它很经典,也当怀念一下吧;

4、安装低版本gcc实属研究、兴趣所致,与实际开发并无联系。

安装简略步骤:

1、下载gcc;

2、解压;

3、看INSTALL目录下的介绍;

4、配置;

5、编译;

6、安装。

下面着重介绍配置及安装过程。

gcc的下载地址如下: http://ftp.gnu.org/gnu/gcc

下载文件名称为·gcc-2.95.3.tar.gz·,下载及解压不用多说。

gcc说最好另建一个新目录来配置、编译,这里按它的意思(注:gcc-built即为这个目录,源代码目录为gcc-2.95.3):

1

2

3$ mkdir gcc-built

$ cd gcc-built

$ ../gcc-2.95.3/configure --prefix=/usr/local/gcc-95.3 --enable-shared --with-gnu-as --with-gnu-ld --enable-threads=posix --enable-languages=c

这里的配置是参考我以前写的一篇文章:gcc及doxygen的安装过程。不过在configure过程中卡住了:

1

2

3checking for a BSD compatible install... /usr/bin/install -c

checking for ranlib... (cached) ranlib

checking for texconfig... true

这里卡了好几分钟,等了好久,期间回复了两封e-mail,去csdn灌了两次水,因此具体时间不清楚。configure结束后提示生成Makefile的信息:

1

2

3checking for a BSD compatible install... (cached) /usr/bin/install -c

creating ./config.status

creating Makefile

编译:

1$ make

编译出错:

1

2

3

4

5

6

7

8

9

10

11In file included from /usr/include/sys/types.h:270,

from /usr/include/stdlib.h:320,

from ../../gcc-2.95.3/gcc/frame.c:42:

/usr/include/bits/pthreadtypes.h:69: warning: unnamed struct/union that defines no instances

../../gcc-2.95.3/gcc/frame.c:55: extra brace group at end of initializer

../../gcc-2.95.3/gcc/frame.c:55: (near initialization for `object_mutex.__data')

../../gcc-2.95.3/gcc/frame.c:55: warning: excess elements in struct initializer

../../gcc-2.95.3/gcc/frame.c:55: warning: (near initialization for `object_mutex.__data')

make[1]: *** [libgcc2.a] 错误 1

make[1]: Leaving directory `/home/latelee/soft/gcc-built/gcc'

make: *** [all-gcc] 错误 2

google得到的结果说要下载几个补丁,于是到http://www.linuxfromscratch.org/patches/downloads/gcc/(这个网站对于做过LFS的同志们来说十分熟悉)下载补丁,与2.95.3有关的共5个,都下载下来。 进入源代码目录:

1$ patch -Np1 -i ../gcc-patch/gcc-2.95.3-2.patch(和其它4个)

进入gcc-built重新编译:

1$ make

遗憾的是,错误信息依旧。 再次google,找到一篇文章,里面的配置是不需要线程库的,我以研究为目的,也不需要线程库,于是删除编译过程中生成的文件和源代码目录,再次解压、配置:

1$ ../gcc-2.95.3/configure --prefix=/usr/local/gcc-2.95.3 --enable-shared --with-gnu-as --with-gnu-ld --disable-threads --enable-languages=c,c++ --program-suffix=-2.95.3

这个过程使用了time命令,结果显示,configure过程约5分钟。 不打补丁再次编译、安装(安装需要使用root权限):

1

2

3

4

5

6

7

8

9

10$ make

# make install

$ ls /usr/local/gcc-2.95.3/

bin  i686-pc-linux-gnu  include  info  lib  man

$ ls /usr/local/gcc-2.95.3/bin

c++      cpp  gcc  i686-pc-linux-gnu-gcc  unprotoize

c++filt  g++  gcov        protoize

这里要注意,以前配置时使用了–program-suffix=-2.95.3,本想将生成的编译器添加个后缀,结果无效。其实,这个选项在自带的INSTALL下面的介绍根本就没有,是一厢情意加上去的,当然无效了。

无办法,只好手动修改了,这里将gcc改为gcc-2.95.3 添加环境变量,习惯地,一般修改~/.bashrc文件:

1export PATH=/usr/local/gcc-2.95.3/bin:$PATH

注销,重新登陆,查看新安装好的编译器:

1

2

3$ gcc-2.95.3 -v

Reading specs from /usr/local/gcc-2.95.3/lib/gcc-lib/i686-pc-linux-gnu/2.95.3/specs

gcc version 2.95.3 20010315 (release)

关于低版本与高版本编译器生成的汇编代码的对比及研究,请关注本网站的后续文章。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值