日本語版
最新ニュース
科学&テクノロジー

Krister Walfridsson の古いブログ: Building GCC 1.27

GCC 1.27 は 1988 年にリリースされ、x86 CPU をサポートする GCC の最初のバージョンです。 それをデスクトップコンピュータで動かせたら面白いだろうと思いました。 ミハイル・マルツェフは少し前にこれについて素晴らしいブログ投稿を書きました。29 年前のコンパイラを最新のシステムで構築して使用する”。 私は出発点として Mikhail の作品を使用しましたが、64 ビット Ubuntu システム上に構築したため、パスと as/ld 64 ビット OS で実行するためのオプションがあり、古代の GCC がシステム ヘッダーを理解できないというさらに大きな問題がありました。 また、GDB が理解できない UNIX/32V SDB 形式の代わりに DBX デバッグ形式も有効にしました。 しかし、Mikhail のパッチにそれほど大きな変更を加える必要はありませんでした。 驚くべきことに、最新のアセンブラー、リンカー、デバッガーは、GCC 1.27 によって生成されたコードを問題なく処理します。…

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 のパッチにそれほど大きな変更を加える必要はありませんでした。

驚くべきことに、最新のアセンブラー、リンカー、デバッガーは、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

ビルドしてインストールする

コンパイラは 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

執筆者について: nipponese

Nipponese News編集部は、国内外のニュースを日本語で分かりやすくお届けします。