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,
[email protected]
古高和禎 <
[email protected]>
棚橋誠治 <
[email protected]>