Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
构建用于64位Ubuntu 9.10的gcc-2.95.3_Gcc - Fatal编程技术网

构建用于64位Ubuntu 9.10的gcc-2.95.3

构建用于64位Ubuntu 9.10的gcc-2.95.3,gcc,Gcc,更新:我得到了Debian 3.0r2的副本 其中包含gcc 2.95.4,这是完美的。将其安装在VirtualBox中,现在一切都正常了。:) 原件: 我正试图构建一个gcc 2.95.3的副本,以便在我的机器上使用,我现在真的很困难 我买了一本我一直在看的书,它是从2002年开始的。它希望我编译许多示例,以查看C编译器提供了什么程序集。本书使用gcc 2.95.3。我的系统上的gcc是4.x,更不用说64位了,因此生成的程序集与本书中的示例几乎完全不同 为了让gcc 2.95.3在我的机器上

更新:我得到了Debian 3.0r2的副本 其中包含gcc 2.95.4,这是完美的。将其安装在VirtualBox中,现在一切都正常了。:)

原件:

我正试图构建一个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
似乎无论我做什么,它总是以一个或另一个错误出错。这与我所做的一样接近(我假设,因为这是有史以来编译不停运行的最长时间)

我不是配置或制作或旧软件方面的专家。我只是做了很多年与网络相关的事情,我进入这个低级游戏的时间较晚

最近有没有人尝试过这样做,并且成功了,或者知道为什么会发生这种情况

谢谢,
汤姆

嗯,建立这样一个旧版本将是地狱,更不用说,非常困难。我看到几个选择:

  • 使用较旧的GCC尝试构建更旧的GCC。(类似于3.4.5的东西会更容易工作

  • 比如说,将Ubuntu包用于较旧版本的Ubuntu。如果它没有安装,只需将其解包到某个地方(应该非常简单,只需确保以相同的方式安装所有依赖项。如果这不起作用,请尝试使用旧linux安装的VM


  • 有了正确的标志,gcc将为32位系统发出汇编程序。根据代码的复杂性和您阅读汇编程序的经验水平,2.95和4.x的输出之间可能没有太大差异。如果您不必修补旧版本的编译器,也许值得考虑

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

    gcc yourfile.c -S -arch i386 
    

    如果这不适合您,那么请查看本页,其中列出了在64位主机上构建gcc 2.95所需的步骤。

    您真的想查看汇编程序的输出吗?