fort77 − f2c Fortranトランスレータを透過的に起動し、コンパイラ的に使う。
fort77 [-c] [-g] [-v] [-k] [-P] [-cpp] [f2c option ...] [-L directory ...] [gcc-option ...] [link option ...] [-O optlevel] [-o outfile] [-s] [-w] [-Wx,arg1[,arg2]...] file ...
fort77 スクリプトは f2c コマンドを透過的に起動するので、 このスクリプトは本物のFortranコンパイラのように使用することができる。 Fortran、C言語、アセンブラコードのコンパイル、およびf2cライブラリ とのリンクに使用できる。
末尾に .f のあるファイル引数はFortranのソースファイルとしてコンパイルされる。 ファイル名の末尾に .P のあるファイルはそのままf2cに渡され、 .F のあるファイルは、最初に( "/lib/cpp -traditional" で起動される) C プリプロセッサに渡される。 -D で指定されたすべてのスイッチはプリプロセッサに渡される。 FortranからCへの 変換が成功すると、生成されたCのファイルは cc に渡され、オブジェクトファイルに変換される。 ファイル名の末尾が .c, .C, .cc, .i, .s, .S, .m, .cc あるいは .cxx のファイルは直接GNU Cコンパイラに渡される。 gcc(1) を参照。 それ以外のすべてのファイルはリンカに渡される。
-c |
リンクは行なわず、それぞれのソースファイルからオブジェクトファイル( .o )を作る。 |
||
-g |
デバッグ情報を含める。 |
||
-v |
冗長モードにして詳細な情報を出力する; このオプションをふたつつけることによって、Cコンパイラなどの出力も冗長 モードにすることができる。 |
||
-k |
f2cによって生成されたCのファイルを残す。 |
||
-cpp |
ファイル名の末尾が .F で終っているかの様に、FortranコードをCプリプロセッサに引き渡す。 |
||
-P |
f2cの .P ファイルを生成する。 |
-Ldirectory
最終的なリンク時のライブラリサーチパスに directory を含める。
-o outfile
結果を outfile に出力する。
-Wx,arg1[,arg2...]
引数 argi をサブプロセスxにそのまま渡す。 ここで xには以下のいずれかを指定する事ができる: x が f のときにはf2cに引数が渡される。 同様に p のときにはプリプロセッサに、 c のときにはCコンパイラに、 a のときにはアセンブラ(これも実際はCコンパイラ)に、 l のときにはリンカに渡される。 例えば、Cのコンパイル時にプリプロセッサ定数を定義するには -Wc,-DUNIX=1 とする。また、f2cの -f オプションを指定するには -Wf,-f とする。
f2c のオプション
つぎに列挙する様に殆どの f2c オプションはそのまま f2c に引き渡される: -C, -U, -u, -a, -E, -h, -P, -R, -r, -z, -I2, -I4, -onetrip, -!c, -!l, -!P, -!R, -ext, -!bs, -W[n], -w8, -r8, -w66
gcc のオプション
つぎのオプションはgccにそのまま引き渡される: -f*, -W*, -U*, -A*, -m*, -S, -E, -v, -x, -pipe, -o, -I, -V, -b*, -p, -pg
リンカへのオプション
リンク段階に渡されるオプションは -static, -shared, -v, -V, -symbolic
デバッグ機能を働かせるためには、最初にブレークポイントを MAIN__ に設定する必要がある。
このスクリプトは、自動的に -I. オプションをつけて f2c を起動する。 古いバージョンの f2c ではこのオプションをサポートしていないかもしれない。
このスクリプトはgccとf2cの組合せ用に作られている。それ以外のコンパイ ラを用いる場合には多分変更が必要だろう。
gccとは異なり、-Oを指定すると自動的に -ffast-math オプションも指定される。 この事が問題を起こす場合には、 -fnofast-math によってこの設定を無効にすることができる。
fort77 スクリプトはスラッシュから始まるロングオプションを受け付けるので、 厳密に Posix.2 に従っているわけではない。 これは gcc との互換性のためである。
Thomas Koenig, ig25 AT rz DOT uni-karlsruhe DOT de
古高和禎 <furutaka AT Flux DOT tokai DOT jaeri DOT go DOT jp>
棚橋誠治 <tanabash AT tuhep DOT phys DOT tohoku DOT ac DOT jp>