转载声明
转载链接:http://kristerw.blogspot.com/2019/01/building-gcc-127.html
转载日期:2024-04-27 22:21:55
正文
GCC 1.27 于 1988 年发布,是支持 x86 CPU 的 GCC 的第一个版本。我认为让它在我的台式电脑上工作会很有趣。
米哈伊尔·马尔采夫(Mikhail Maltsev)不久前写了一篇关于这个问题的精彩博客文章“在现代系统上构建和使用一个29岁的编译器”。我以 Mikhail 的工作为起点,但我是在 64 位 Ubuntu 系统上构建的,所以我需要更新在 64 位操作系统上运行的路径和 as
/ ld
选项,而且我遇到了更大的问题,因为古老的 GCC 不理解系统标头。我还启用了 DBX 调试格式,而不是 GDB 无法理解的 UNIX/32V SDB 格式。但我不需要对米哈伊尔的补丁进行那么大的改动。
令人惊讶的是,现代汇编程序、链接器和调试器可以毫无问题地处理 GCC 1.27 生成的代码。以及命令选项,如 -O 、 -E 、 -S 、 -c 、 -g -W -pedantic -fomit-frame-pointer 、 和 执行您对使用新式 GCC 的期望。所有选项都记录在手册页中 – 您可以通过将 gcc.1 文件传递给 man
man -l gcc.1
如何在 Ubuntu 上构建 GCC 1.27
我在 64 位 Ubuntu Desktop 16.04 上构建了编译器,如下所述。
先决条件
GCC 1.27 是一个 32 位程序,因此我们需要安装 32 位编译器和运行时支持
sudo apt install gcc-multilib
下载和准备源代码
下载源代码和补丁,并将补丁应用为
wget https://gcc.gnu.org/pub/gcc/old-releases/gcc-1/gcc-1.27.tar.bz2
wget https://gist.github.com/kristerw/b854b6d285e678452a44a6bcbf7ef86f/raw/gcc-1.27.patch
tar xf gcc-1.27.tar.bz2
cd gcc-1.27
patch -p1 < ../gcc-1.27.patch
配置源代
编译器是通过设置指向正确配置文件的符号链接来配置的
ln -s config-i386v.h config.h
ln -s tm-i386v.h tm.h
ln -s i386.md md
ln -s output-i386.c aux-output.c
您可能希望通过更新 bindir
和 libdir
Makefile
.我将它们设置为
bindir = /home/kristerw/compilers/gcc-1.27/bin
libdir = /home/kristerw/compilers/gcc-1.27/lib
构建和安装
编译器分两个(或三个)阶段构建,我们首先使用系统编译器构建它
make
然后,我们使用新构建的编译器再次构建它
make stage1
make CC=stage1/gcc CFLAGS="-O -Bstage1/ -Iinclude"
作为第三个可选步骤,我们使用第二个编译器再次构建它,并检查生成的二进制文件是否与第二个编译器相同(如果不是,则编译器已错误编译自身)。
make stage2
make CC=stage2/gcc CFLAGS="-O -Bstage2/ -Iinclude"
diff cpp stage2/cpp
diff gcc stage2/gcc
diff cc1 stage2/cc1
我们现在可以安装编译器了
make install
最新评论
这个软件有bug的,客户端windows有些键不能用如逗号、句号
没有收到邮件通知
我的评论通知貌似坏掉了,定位一下问题
测试一下重新部署后的邮件功能
居然看到自己公司的MIB库,诚惶诚恐
那可能是RobotFramework-ride的版本问题。我装的1.7.4.2,有这个限制。我有空再尝试下旧版本吧,感谢回复。
你好!我在python2.7中安装RobotFramework-ride的时候提示wxPython的版本最高是2.18.12,用pip下载的wxPython版本是4.10,而且我在那个路径下没有找到2
真的太好了,太感谢了,在bilibili和CSDN上都找遍了,终于在你这里找到了