February 08, 2004

FortranをCに変換 @ Cygwin

cygwinでfortranのソースをコンパイルするにはg77コンパイラをいれればいい話ですが(やり方はここ)、fortranのソースをCにコンバートしてくれるf2cというものがあるので、それを使ってみることにしました。

インストール方法をいちいち解説するのは面倒なので、インターネット上にあったシェルスクリプトを改造してCygwin用の自動インストーラを作りました。ここからダウンロードできます。
やり方はCygwin上で(適当なディレクトリに移動後)、以下を実行してください。

$ wget http://fenrir.naruoka.org/download/archive/buildf2c
$ chmod +x buildf2c
$ ./buildf2c

もしbuildf2cというファイルが正しく落とせなかった場合はwgetというソフトがないことによるものです。Cygwinのインストーラのソフトを選択する画面でWebカテゴリの中に入っていると思うので、あらかじめインストールしておいてください。またインストールにはgccを利用しますので、それもお忘れなきよう。

あとはf2cの使用法ですが、以下の手順で利用できます。

$ f2c hoge.f

これでhoge.fはhoge.cというC言語のコードに翻訳されます。また、できたhoge.cをコンパイルするには
$ gcc hoge.c -I/usr/local/include -L/usr/local/lib -lf2c

となにやらオプションをたくさんつける必要があります。

実際、f2cを使用してみた結果は、shockt.fshockt.c。当然ながら可読性はありませんが、コンパイル後のバイナリを比較してみると、f2cを使用した方法のほうがファイルサイズが小さくなっています(『g77 shockt.f』は69196byte、『gcc shockt.c』は61355byte)。うわさによるとf2cを使用したほうがコードが多少高速化されるらしいです。
なおサンプルコードは衝撃波管問題をTVDスキームで解いたものです(=講義ノートからパクリ)。

19:13 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | この記事をdel.icio.usでブックマーク | トラックバック
このエントリーのトラックバックURL: http://fenrir.naruoka.org/mt/mt-tb.cgi/166
コメント
コメントする









名前、アドレスを登録しますか?
(次回以降コメント入力が楽になります)
  • 匿名でのコメントは受け付けておりません。
  • 名前(ハンドル名可)とメールアドレスは必ず入力してください。
  • メールアドレスを表示されたくないときはURLも必ず記入してください。
  • コメント欄でHTMLタグは使用できません。
  • コメント本文に日本語(全角文字)がある程度多く含まれている必要があります。
  • コメント欄内のURLと思われる文字列は自動的にリンクに変換されます。