Descriptions of the Current Directory
-
EGCS: An Experimental Step In The GNU C Compiler Development
English Page is here.
[0] 新着情報
- 06月14日、1998:shared libf2c つきの egcs のサポートは
egcs-1.0.1-1g を最後に停止します。理由は、U77 の部分で
egcs と gcc-g77-2.7.2.fu.1-2O の間に互換性のない部分が
有ることが判明したこと、また、libf2c 自体大きくないので
シェアードにすることによるメリットがあまりないことです。
システム標準の egcs (今なら 1.0-2e)をお使い下さい。
- 03月08日、1998:(egcs-1.0.1-1g) ftp.linuxppc.org に新しい
バージョン(egcs-1.0-1g)が有ったので、変更のあった
パッチも含めて作りなおしました。
- 02月26日、1998:(egcs-1.0.1-1e) libf2c.so を作るパッチを
あて作りなおしました。
- 02月24日、1998:(egcs-1.0.1-1e) ftp.linuxppc.org に新しい
バージョン(egcs-1.0-1e)が有ったので、新たに加わった
パッチも含めて作りなおしました。
このバージョンでは、va_arg の問題は修正されているようです。
- 02月04日、1998:(egcs-1.0.1-1C) ftp.linuxppc.org に新しい
バージョン(egcs-1.0-1C)が有ったので、新たに加わった
パッチも含めて作りなおしました。
- 01月23日、1998:(egcs-1.0.1-1)
(mkinux-jp 6582) で小寺さんが紹介されている egcs の最新版
(バージョン1.0.1) の MkLinux 版 RPM を作りました。
C、C++、objective C、FORTRAN
をサポートします。FORTRAN は g77-0.5.22 の発展型、
その他の部分は gcc-2.8.0 の発展型になっています。
詳しくは http://www.cygnus.com/egcs/
をご覧下さい。
このパッケージは最新版の
"binutils" と "glibc" を必要とします。
これらの shared library を導入するには
wip980112 以降へのアップデートが必要です。
アップデートに関しては
the update note を参照下さい。
[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