Descriptions of the Current Directory

EGCS: An Experimental Step In The GNU C Compiler Development

English Page is here.

[0] 新着情報

[1] ファイル

このディレクトリーは egcs を SRPM から作った直後の /usr/src/redhat と同じ構造をしています。 Egcs の SRPM は基本的には ftp://ftp.linuxppc.org/linuxppc/redhat/SRMPS/egcs-1.0-1g.src.rpm と同等ですが、プレリリース版でなく正式リリースの the official egcs-1.0.1.tar.gz ソースを使っていることと、インストール先を /usr でなく /usr/egcs にした点が違っています。インストール先を変えたのは、システム標準の コンパイラーをそれとは明らかに違うもので上書きすることに抵抗があったからです。

RPMS/ppc/*.ppc.rpm : バイナリーパッケージ
SOURCES/* : ソースとパッチ
SPECS/*.spec : パッケージ作成スペック
SRPMS/*.src.rpm : ソースパッケージ
README-j.html : このファイル

[2] インストール前の注意

このパッケージのインストールには "wip-980112" 以降が必要です。 また、shared 環境に移行していなくてはいけません。 何故なら、このパッケージに必要な binutils-2.8.1 の RPM は "wip-980112" 以降でないと安定に使えないからです。 FORTRAN は g77-0.5.22 の発展型、 その他の部分は gcc-2.8.0 の発展型になっています。 アップデートの作業例については こちら を参照下さい。ただし、"wip-980113" の導入は NuBus の場合特に システム不安定の原因になる可能性があることが MkLinux-jp の メーリングリストで報告されています。所詮、wip は wip ですから。 ちなみに私のマシン(8115/110)の場合には、NuBus Mac にありながら、 導入後2日の連続運転中に、g77 や egcs、spice などのパッケージ作成に かなり激しく使いましたが、全く問題を生じておりません。 いつものように、インストールは自己責任で行って下さい。

[3] インストールの手順

既に述べたとおり、インストール前にシステムを "wip-980112" 以降に上げ、最新版の "glibc" と "binutils" を入れておいて下さい。 アップデートの作業手順については 私の場合の記録 を参照下さい。

準備が出来たら、

$ ls
egcs-1.0.1-1g.ppc.rpm
egcs-c++-1.0.1-1g.ppc.rpm
egcs-g77-1.0.1-1g.ppc.rpm
egcs-objc-1.0.1-1g.ppc.rpm
egcs-libstdc++-2.8.0-1g.ppc.rpm
egcs-libstdc++-devel-2.8.0-1g.ppc.rpm
$ rpm -qpl *

で、インストールするパッケージの内容を確認します。 問題がなければ、実際のインストールに進みます。

$ su
# rpm -i egcs-*

この後で /usr/egcs/lib を /etc/ld.so.conf に追加します。 既に書いて有る場合には ldconfig だけでいいです。

# cat /usr/egcs/lib >> /etc/ld.so.conf
# /sbin/ldconfig

これで、入りました。 インストール先が /usr/egcs なので

$ export PATH=/usr/egcs/bin:$PATH

として、パスを通しておきます。 後は使ってみて下さい。使い方は gcc 版の場合と同じです。 幸運を祈ります。

[4] G77-0.5.19 の場合との違いで気づいた点

Egcs-1.0.1 の g77 は g77-0.5.22 ベースで、文法チェックが かなり厳しくなっています。そのため、いくつか新たに FFLAGS にフラッグを加えないと、今まで g77-0.5.19 でコンパイルできて いたプログラムがコンパイルできなくなってしまう可能性があります。 そういう場合、ソースを修正するのがベストですが、取り合えず ソースを修正せずに間に合わせるには次のようなフラッグが役に 立ちます。

-fno-globals: これは以下のように怒られた場合に使います。
Global name NAME defined at ... already defined...
Global name NAME at ... has different type...
Too many arguments passed to NAME at ...
Too few arguments passed to NAME at ...
Argument #N of NAME is ...
-fno-f90 -fugly-complex: これは以下のように怒られた場合に使います。
Ambiguous use of intrinsic INTRINSIC ...

詳しくは "info" をご覧下さい:

$ info -f g77 M GLOBALS
$ info -f g77 M CMPAMBIG

もう一つの注意事項は、このバージョンではシェアード版の "libf2c" をサポートしてない点です。これは単に私が怠けているだけです。 すみません。

[5] さらなる情報

FORTRAN プログラムの移植をあつかった このページ も参考になるかも しれません。
Back to Keisuke Fujii's MkLinux Page
fujiik@jlcuxf.kek.jp Jan. 23, 1998