FORTRANコンパイラのインストール


MacOS XのTerminal環境ででFORTRANをコンパイル可能にするために、FORTRAN→C変換スクリプトであるf2cを利用します。

必要なもの
Cコンパイラ(MacOSX製品パッケージに付属)
f2c
fort77スクリプト
perl(OSXにインストール済み)



まず、Cコンパイラをインストールします。
MacOS X付属のDeveloper CDには、コマンドラインベースのCコンパイラも含まれます。
CDをセットし、Developer.pkgをダブルクリックすればcocoa開発環境とともにコマンドライン・Cコンパイラがインストールされます。
インストール終了後、terminalを起動してccコマンドが実行できることを確認して下さい。



次に、f2cのソースをダウンロードします。
ソースはftp://netlib.bell-labs.com/netlib/f2c/に おいてありますので、このデータを取りあえず全部ダウンロードします。
IEでAddressに「ftp://netlib.bell-labs.com/netlib/f2c.tar」と入力すると、全て一気にダウンロードできます。
ファイルサイズは1MB程度です。
圧縮ファイルを全て解凍します。

% pwd
/Users/nagasima/files
% ls
f2c.tar
% tar xvf f2c.tar
% cd f2c
% gzip -d *.gz
% unzip libf2c.zip
% cd src
% gzip -d *.gz
% cd ..

さて、01/04/04の時点でnetlib.bell-labs.comに置いてあるf2cには一つ変更しなければならない点があります。
標準状態のままコンパイルすると一応コンパイルできますが、実行したときに必ずBus errorで止まります。
これはunixのシステムコールsignal()の内部でエラーが起こっているためですが、この原因はよくわかりません。
しかしここでは割り込みなどのシグナルを無視するように定義しているだけなので、この処理は飛ばしてもよいものと 勝手に考えることにします。(^^;
そこで、src/main.cの562行目のsigcatch(0);をコメントアウトします。

sigcatch(0); /*変更前*/
/*sigcatch(0);*/ /*変更後*/

変更が終了したら、プログラムをmakeします。

% pwd
/Users/nagasima/files/f2c
% cd src
% make xsumr.out
% make f2c
% cd ..

次にlibf2cをコンパイルします。

% cd libf2c
% make -f makefile.u
% cd ..

各ファイルを適切な場所にコピーします。
ファイルのコピー先フォルダはスーパーユーザー権限で守られているので、コピーするためにはスーパーユーザー権限でcpを実行する必要があります。 ところで、MacOS Xでは、最初のインストール状態でroot(スーパーユーザー)にパスワードが設定されていないため、suコマンドでrootになることが出来ません。
管理者権限でコマンドを実行するには以下の二つの方法がありますので、このどちらかを試して下さい。
・sudoコマンドを使う
以下のようにsudoコマンドを使ってコマンドを実行します。

% sudo cp src/f2c /usr/bin
password:

コマンドを実行するとき、最初の1回目はパスワードを求められますので、MacOS Xインストール時に設定した管理者(=最初に作成したユーザー)のパスワードを入力します。
一度パスワードを入力すると、その後一定時間はパスワードを入力せずにsudoコマンドを実行できます。

・rootにパスワードを設定する
sudoでpasswdコマンドを実行すると、rootにパスワードを設定することができます。
コマンドラインを頻繁に使用する人はパスワードを設定して置いた方がいいでしょう。

% sudo passwd root
password:

rootにパスワードを設定したら、あとはsuコマンドでrootになれます。
以下はrootにパスワードを設定したものと仮定したコマンド実行例です。

% su
password:
% cp src/f2c /usr/bin
% cp libf2c/libf2c.a /usr/lib
% cp f2c.h /usr/include
% cp f2c.1 /usr/share/man/man1
% ranlib /usr/lib/libf2c.a
% exit

これでf2cが動作するようになったはずです。
試しにmyprog.fを変換すると、

% f2c myprog.f
% cc myprog.c -lf2c -o myprog

上記コマンドで実行ファイルmyprogができますので、これが正常に実行できることを確認して下さい。
もしf2cが見つからないと言われたら、一度ログインし直すか、source ~/.cshrcまたはsource /usr/share/init/tcsh/rcを試して下さい。



さて、毎回f2cとccの両コマンドを実行するのは面倒です。これを回避するために、Thomas Koenig氏が作成したperlスクリプトfort77を使用します。
fort77は色々な所からダウンロードできます。しかしlinux用パッケージはrpm形式の配布が多いですし、netBSD用のパッケージなどはディレクトリ構成が違っていて手直しが面倒なので、TurboLinux4.2ftpにインストールされていたものをここに置いておきます。
ファイルダウンロード後ファイルを解凍し、適切な場所にコピーします。
ついでに、f77をfort77のリンクとして作成しておくとf77コマンドでコンパイルできるので便利です。

% tar zxvf fort77-1.14a-repack.tar.gz
% cd fort77-1.14a-repack
% chmod a+x fort77
% su
Password:
% cp fort77 /usr/bin
% cp fort77.1 /usr/shear/man/man1
% ln -s /usr/bin/fort77 /usr/bin/f77
% exit

これで、f77コマンドで実行バイナリが作成できるようになりました。

% f77 myprog.f -o myprog

うまくコンパイルできたらFORTRANのインストールは完了です。
fort77の日本語マニュアルはここで読むことができます。