构建gcc-2.95.3以在64位Ubuntu 9.10上使用

时间:2011-01-26 18:30:48

标签: gcc

更新:我从http://ftp.ntct.edu.tw/Linux/ISO/Debian/3.0r2/获得了Debian 3.0r2的副本 这包含gcc 2.95.4,这是完美的。安装在VirtualBox中,现在一切都与世界相符。 :)

ORIGINAL:

我正在尝试构建一个gcc 2.95.3的副本,以便在我的机器上使用,而且我的时间非常困难。

我购买了一本我一直在阅读的书,它是从2002年开始的。它要我编译许多例子,看看C编译器提供了什么样的汇编。这本书使用gcc 2.95.3。我系统上的gcc是4.x,更不用说64位了,因此程序集生成的外观几乎与本书中的示例相似。

我已经尝试过让gcc 2.95.3在我的机器上工作的一切。我甚至使用VirtualBox安装了较旧的32位Linux发行版,但是在我的生活中不能用它来编译。

目前,在我的机器上,这就是我正在做的事情:

./configure --host=i386-amd-linux-gnu
make

在它滚动几分钟之后,它出现了这个:

make[2]: Entering directory `/home/twilson/Downloads/gcc-2.95.3/gcc/ch'
gcc -c  -DIN_GCC   -g -O2     -I. -I.. -I. -I./.. -I./../config -I./../../include parse.c
parse.c: In function ‘require’:
parse.c:326: warning: format not a string literal and no format arguments
parse.c: In function ‘expect’:
parse.c:352: warning: format not a string literal and no format arguments
gcc -c  -DIN_GCC   -g -O2     -I. -I.. -I. -I./.. -I./../config -I./../../include actions.c
gcc -c  -DIN_GCC   -g -O2     -I. -I.. -I. -I./.. -I./../config -I./../../include except.c
gcc -c  -DIN_GCC   -g -O2     -I. -I.. -I. -I./.. -I./../config -I./../../include grant.c
gcc -c  -DIN_GCC   -g -O2     -I. -I.. -I. -I./.. -I./../config -I./../../include lang.c
gcc -c  -DIN_GCC   -g -O2     -I. -I.. -I. -I./.. -I./../config -I./../../include tree.c
gcc -c  -DIN_GCC   -g -O2     -I. -I.. -I. -I./.. -I./../config -I./../../include lex.c
gcc -c  -DIN_GCC   -g -O2     -I. -I.. -I. -I./.. -I./../config -I./../../include decl.c
decl.c: In function ‘start_struct’:
decl.c:4451: error: argument ‘code’ doesn’t match prototype
ch-tree.h:736: error: prototype declaration
make[2]: *** [decl.o] Error 1
make[2]: Leaving directory `/home/twilson/Downloads/gcc-2.95.3/gcc/ch'
make[1]: *** [cc1chill] Error 2
make[1]: Leaving directory `/home/twilson/Downloads/gcc-2.95.3/gcc'
make: *** [all-gcc] Error 2

似乎无论我做什么,它总是会因一个错误或另一个错误而出错。这和我一样接近(我假设,因为这是有史以来最长的编译而没有停止)。

我不是配置或制作或使用旧软件的专家。多年来我只做网络相关的事情,而且我很晚才进入这个较低级别的游戏。

最近是否有人试图这样做并成功或知道为什么会这样?

谢谢, 汤姆

2 个答案:

答案 0 :(得分:1)

使用正确的标志,gcc将为32位系统发出汇编程序。根据代码的复杂程度和阅读汇编程序的经验水平,2.95和4.x的输出之间可能没有太大差异。也许值得考虑的是它是否可以让你不必将旧版本的编译器打包在一起。

例如,以下内容将为i386 CPU生成汇编代码(在.s文件中):

gcc yourfile.c -S -arch i386 

如果这不适合您,请查看此页面,其中列出了在64位主机上构建gcc 2.95所需的步骤。 http://www.trevorpounds.com/blog/?p=111

答案 1 :(得分:0)

好吧,建造这样一个旧版本将是地狱,更不用说,非常难。我看到了几个选项:

  1. 使用较旧的GCC尝试构建更老的GCC。 (像3.4.5这样的东西会有更多的运气。

  2. 将Ubuntu软件包用于旧版本的Ubuntu,比如Dapper's GCC 2.95。如果它没有安装,只需将其解压缩到某处(应该非常简单,只需确保以相同的方式安装所有依赖项。如果这不起作用,请尝试使用旧的Linux安装的VM。

    < / LI>