gcc と g77, gpc です。最新版は gcc-2.7.2.2 その他となりましたが、 これは glibc-2 対応がメインなので、 しばらくはこのパッケージで良いかと思います。 作業の流れとしては、
という順番になります。
実は Debian GNU/Linux なら全部バイナリパッケージで揃います :-)
また Pascal コンパイラが不要な方は EGCS project homepage を訪ねてみると良いでしょう。
ちなみに私のところの環境は
といったものです。 コンパイルにはバイナリ配布で手に入れた gcc 2.7.0 を用いました。
gcc、g77 のソースは例えば
ftp://ftp.iij.ad.jp/pub/GNU/ ftp://ftp.iis.u-tokyo.ac.jp/GNU/
などのディレクトリにあります。 GNU のソースを配布しているところは多いはずですから、 近いところを選ぶようにしましょう。
ファイル名はそれぞれ
gcc-2.7.2.1.tar.gz g77-0.5.19.1.tar.gz
のようになっているはずです。
成蹊の方は trelay にも置いてありますから利用してください。
gcc 2.7.2.1 に対応している gpc の最新版は、国内では
ftp://ftp.hiroshima-u.ac.jp/pub/GNU/gnu-pascal/
以下にあります。ファイル名は
gpc-2.0.tar.gz
です。
gpc を作るためには、 gcc に g77 の内容をマージしてはいけないようです。 とりあえず gcc だけを作り、ついで gpc を作ります。
ソースを展開します。 gcc と gpc はそれぞれ別なディレクトリツリーに 展開することが推奨されています。
tar zxf gcc-2.7.2.1.tar.gz tar zxf gpc-2.0.tar.gz
まず gpc をコンパイルするための gcc を作ります。 --prefix では、コンパイラのインストール先を /usr ベースに指定しています。
cd gcc-2.7.2.1 ./configure --prefix=/usr make LANGUAGES=c
続いて gpc を作ります。対応する gcc として、先ほど作成した 2.7.2.1 ベースのものを選択します。
cd ../gpc-2.0 ./configure --with-gccsrc=../gcc-2.7.2.1 --with-gccbin=../gcc-2.7.2.1
make し、スーパーユーザになって make install で出来上がりです。 実際のコンパイラは /usr/lib/gcc-lib/i?86-unknown-linux/2.7.2.1/ 以下にインストールされますので、適宜 strip しておくと良いでしょう。 また info が /usr/info にインストールされますので、 これも gzip しておくとディスクの節約になります。
gpc を作った場合は gcc のソースを配布状態に戻します。
cd ../gcc-2.7.2.1 make distclean cd ..
gpc を作らなかった場合はアーカイブを展開するだけです。
tar zxf gcc-2.7.2.1.tar.gz
g77 のソースを展開します。 g77 を展開してできる f ディレクトリを gcc のルートに置く必要があります。 ドキュメントで推奨されているやり方は以下のようなものです。
ln -s gcc-2.7.2.1 g77-0.5.19.1 tar zxf g77-0.5.19.1.tar.gz rm g77-0.5.19.1
gcc のソースに g77 用のパッチを当てます。
cd gcc-2.7.2.1 patch -p1 < f/gbe/2.7.2.1.diff
ここで f2c との共存する場合には f2c-exists-ok という空のファイルを、 また f77 コマンドを g77 で用意する場合には f77-install-ok というファイルを gcc-2.7.2.1 ディレクトリに作ります。 touch を使うと良いでしょう。 詳しくは gcc-2.7.2.1/f/INSTALL を参考にして下さい。
configure して、引き続き make します。 インストール先のディレクトリは /usr にしています。 このあたりの詳細については gcc-2.7.2/INSTALL を読んで下さい。
./configure --prefix=/usr make LANGUAGES=c make stage1 make CC="stage1/xgcc -Bstage1/" CFLAGS="-O" make stage2 rm -rf stage1 make CC="stage2/xgcc -Bstage2/" CFLAGS="-O"
make 以下は、 make bootstrap でも良いようです。
スーパーユーザーになってインストールします。 本来は make compare してバイナリに矛盾が無いことを確認することが推奨されていますが、 linux で ELF 用のコンパイラを作る場合には、効力が無いそうです。
make install CC="stage2/xgcc -Bstage2/" CFLAGS="-O"\ LANGUAGES="c c++ objective-c g77"
一度目の make install ではなぜか g77 の info を作るところで失敗しますが、 もう一度黙って make install すると通ります(何故?)。
バイナリは /usr/bin、 /usr/lib/gcc-lib/i?86-unknown-linux/2.7.2.1.f.1/ 以下にできますので、 gpc の場合と同じく適宜 strip して下さい。 /usr/info の info ファイルも同様です。