1712025411
2024-04-02 01:09:26
GCC 1.27 は 1988 年にリリースされ、x86 CPU をサポートする GCC の最初のバージョンです。 それをデスクトップコンピュータで動かせたら面白いだろうと思いました。
ミハイル・マルツェフは少し前にこれについて素晴らしいブログ投稿を書きました。29 年前のコンパイラを最新のシステムで構築して使用する”。 私は出発点として Mikhail の作品を使用しましたが、64 ビット Ubuntu システム上に構築したため、パスと as/ld 64 ビット OS で実行するためのオプションがあり、古代の GCC がシステム ヘッダーを理解できないというさらに大きな問題がありました。 また、GDB が理解できない UNIX/32V SDB 形式の代わりに DBX デバッグ形式も有効にしました。 しかし、Mikhail のパッチにそれほど大きな変更を加える必要はありませんでした。
-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
ビルドしてインストールする
コンパイラは 2 段階 (または 3 段階) で構築されます。まず、システム コンパイラを使用して構築します。
make
次に、新しく構築されたコンパイラを使用して再度構築します。
make stage1 make CC=stage1/gcc CFLAGS="-O -Bstage1/ -Iinclude"
3 番目のオプションのステップとして、2 番目のコンパイラを使用して再度ビルドし、結果のバイナリが 2 番目のコンパイラと同一であることを確認します (そうでない場合は、コンパイラ自体がミスコンパイルされています)。
make stage2 make CC=stage2/gcc CFLAGS="-O -Bstage2/ -Iinclude" diff cpp stage2/cpp diff gcc stage2/gcc diff cc1 stage2/cc1
これでコンパイラをインストールする準備ができました
make install
#Krister #Walfridsson #の古いブログ #Building #GCC