g95 エラーメッセージ用に emacs を設定する方法 (Helge Avlesen)
次の行を .emacs ファイルに追加します。
;; コンパイルモードに g95 を追加
(ロード後の評価「コンパイル」
‘(setq コンパイル エラー 正規表現アリスト
(cons ‘(“^In file \\(.+\\):\\([0-9]+\\)” 1 2)
コンパイルエラー正規表現リスト)))
これにより、emacs はコンパイル モードで次のエラー メッセージを見つけることができます。
共有 g95 プログラムを R とリンクする方法
「libf95.so」を作る
g95 をインストールした後、ファイル「libf95.a」を見つけます。これを空のサブディレクトリにコピーし、すべてのオブジェクトを抽出します: “ar -x libg95.a”。次に共有ライブラリを作成します: “gcc -shared -o libg95.so *.o”。”libg95.so” ファイルをユーザーが利用できる場所 (つまり /usr/local/lib) に置くと便利です。
次のように g95 でソース ファイルをコンパイルします。 g95 -c -fPIC mylib.f オブジェクトを独自の共有ライブラリにします gcc -shared -o mylib.so mylib.o 。R でライブラリを次のように使用します。
> dyn.load(“/path-to/libg95.so”,local=FALSE)
> dyn.load(“/path-to/mylib.so”)
例: (二乗ベクトル) myib.f:
サブルーチン fsquv(n, x)
整数 n
倍精度 x(n)
整数 i
do 100 i = 1, n
x(i) = x(i) ** 2
100継続
終わり
R で上記の手順を実行した後:
> dyn.load(“/path-to/libg95.so”,local=FALSE)
> dyn.load(“/path-to/mylib.so”)
次に、Rで「ラッパー」関数を定義して、簡単にします
平方ベクトル <- 関数(x) {
if (!is.numeric(x)) stop(“引数 x は数値でなければなりません”)
out <- .Fortran(“fsquv”,n=as.integer(長さ(x)),x=as.double(x))
return(アウト$x)
}
次に、ラッパー関数を使用します。
> 正方形ベクトル(1:5)
[1] 1 4 9 16 25
G95でフォトランを使用する方法
Eclipse ベースのフル機能の Fortran IDE であるPhotran を使用して、g95 で Fortran プログラムを開発できるようになり ました。Windows システムと Linux システムの両方で使用できます。これは、Windows XP システムで Photran と g95 をセットアップするために必要な手順の概要です。(2007/01/25 改訂 ありがとうハニ)
MinGW を使用している場合は、 www.mingw.orgから「msys」と「msysDTK」をダウンロードしてインストールすると便利です。msys の bin ディレクトリがパスに含まれている必要があります。
< http://www.gfdl.noaa.gov/fms/pubrel/k/am2/bin/mkmf.html >から Perl スクリプト「mkmf」をダウンロードし、パスのどこかにコピーします (例: c:\msys\1.0)。 \置き場)。コンパイラのテンプレート ファイルを作成します。以下は、g95 のテンプレート ファイルの例です。
FC = g95
LD = g95
FFLAGS = -I c:/mingw/include
LDFLAGS = $(LIBS)
# LIBS= の後にライブラリを追加します。例: -lblas
ライブラリ =
このテンプレート ファイルに名前を付けて (例: mkmf.g95)、どこかに保存します (例: c:\msys\1.0\bin)
Photran で mkmf を使用するには、Photran を開き、[実行] メニューの [実行] -> [外部ツール] -> [外部ツール… ] を
クリックします。[メイン] タブをクリックし、以下の説明に従ってフォームに入力します。必要に応じて、環境に合わせて次の例を変更する必要があります。
名前: g95 make Makefile
場所: c:\windows\system32\cmd.exe
作業ディレクトリ: ${workspace_loc}
引数: /C “cd ${container_loc} && perl c:\msys\1.0\bin\mkmf -tc:\msys\1.0\bin\mkmf.g95 -p ${container_name}”
[更新] タブをクリックします:
[x] リソースを更新します…
[適用] をクリックします
メニューの Windows->Preferences->C/C++->Make->New Make Projects をクリックします。
タブ「バイナリパーサー」を選択します。「PE Windows パーサー」を有効にし、他のすべてを無効にします。[OK] ボタンをクリックします。
セットアップが完了しました。
Fortran プログラムを編集、コンパイル、および実行するには、次の手順を実行します。
File->New->Standard Make Fortran Project. [プロジェクト名] フィールドでプロジェクトに名前を付けます。[完了] をクリックします。
左側の「Fortran プロジェクト」または「ナビゲーター」フレームでプロジェクト名が強調表示されていることを確認してください。[ファイル] -> [新規] -> [ソース ファイル] をクリックします。「ソース ファイル」フィールドに入力します (例: myprogram.f90)。[完了] をクリックします。
新しいエディター タブにコードを入力して保存します ([ファイル] -> [保存])。
必要に応じて、さらにソース ファイルを追加します。
Navigator または Fortran プロジェクト フレームでソース ファイルの 1 つをクリックします。
メニュー「実行->外部ツール->外部ツール…」をクリックします
(例) “g95 make Makefile” を選択し、”Run” ボタンをクリックします。Navigator/Fortran Projects フレームで、プロジェクト セクションに「Makefile」ファイルが表示されます。(「g95 make Makefile」の最初の実行後、簡単に起動できるように、外部ツール サブメニューまたはツールバー アイコンのルート セクションに表示されます)。
Navigator/Fortran Projects フレームでソース ファイルの 1 つを再度選択します。
メニューの [プロジェクト] -> [プロジェクトのビルド] または [クリーン…] をクリックします。
コンパイル後、Navigator/Fortran プロジェクト フレームに「myproject.exe」が表示されます。
「myproject.exe」を右クリックし、「Run As->Run Local C/C++ Application」をクリックします。
ほら
Cygwin での Photran の設定については、ftp://ftp.swcp.com/pub/walt/F/photran.pdf を参照してください 。
g95 用に LAPACK を構成する方法
x86 マシン用の LAPACK を正しくビルドするために行う必要がある唯一の変更は、make.inc で NOOPT マクロを設定することです。
NOOPT=-float-store
これにより、浮動小数点ユニットのさまざまな特性を照会しようとするサブルーチンに最適化が干渉するのを防ぎます。
ARPACK を g95 でコンパイルする方法 (Guglielmo Pasa)
このtarball の ARmakeg95.inc と Makefileg95.make と OBjectg.make を使用して、arpack の静的および動的ライブラリを構築します。
g95 で MPICH2-1.0.1 を構成する方法 (Guglielmo Pasa)
bash/sh の場合、以下を使用できます。
エイリアス f77=g95 -ffixed-form -fno-underscoring
エイリアス f90=g95 -ffree-form -fno-underscoring
または csh/tcsh の場合:
Setenv F90
Setenv F77
Setenv CC
正しいコンパイラが検出されていることを確認してから実行します
$ ./configure –prefix=/usr/local –enable-f77 –enable-f90 \
–with-pm=smpd –with-pmi=smpd
$メイク
$ make install
いくつかのテストを試してください。MPICH2 サイトにある MPICH2 WinXP サービス バイナリ ディストリビューションを使用できます。
g95 で BLACS を設定する方法 (Guglielmo Pasa)
BLACSソースツリーが$(HOME)/BLACSにある場合 Bmake.incを編集して変更
BTOPdir=$(ホーム)/BLACS
COMMLIB = MPI
PLAT = g95xp # たとえば
MPIdir = /usr/local # MPICH のルート インストール ディレクトリ
MPILIBdir = $(MPIdir)/lib
MPIINCdir = $(MPIdir)/include
MPILIB = -L$(MPILIBdir) -lmpich -lpmpich -lmpich -lcrypto
….
INTFACE = -DNoChange # C オブジェクトのシンボルを g95 のシンボルと同じ形式のままにする
# つまり、アンダースコアと小文字は使用しない
…
TRANSCOMM = -DCSameF77
…
F77 = g95
F77NO_OPTFLAGS = -ffixed-form -fno-underscoring
…
RANLIB = ランリブ
これが完了したら、SRC/MPI に移動して Makefile を変更します。
の
クロング = …
Windows を使用している場合は、すべての .C 拡張子を .Z に変更します。Windows はファイルのコピー/書き込みで大文字と小文字を区別しないため、cygwin で大文字と小文字が区別されていても、.C と .c を区別できないことがあります。
…
Cintobj = $(comm.:.o=.Z) $(supp:.o=.Z) $(Clong)
…
綺麗:
rm -f … $(long:.o=.Z)
…
Cblacs_gridinit_.C : etc すべての拡張子 .C を .Z に変更します
…
.サフィックス: .o .Z
.cZ:
$(CC) -o C$*.o -c $(CCFLAGS) $(BLACSDEFS) -DCallFromC $<
mv C$*.o $*.Z
次に、BLACS のルートに移動して実行します。
mpiを作る
ライブラリを手動でインストールします。
g95 で SCALAPACK を構成する方法 (Guglielmo Pasa)
SLmake.incの編集・修正
home = $(HOME)/SCALAPACK # SCALAPACK ソース ツリーの場所
PLAT = g95xp # 選択肢の一貫性のためだけに ;o)
BLACSdir = /usr/local/lib # BLACS が置かれている場所
USEMPI = -DUsingMpiBlacs
SMPLIB = -L/usr/local/lib -lmpich -lpmpich -lmpich -lcrypto
…
F77 = g95 -ffixed-form -fno-underscoring
…
CDEFS = -DNoChange $(USEMPI)
…
RANLIB = ランリブ
# ATLAS はパフォーマンスが悪いため、LAPACK3 とその BLAS ディストリビューションを使用します (以下を参照)。
# _sf77 は s=static を表し (_f77.dll も持っています)、f77 は
…f77(別名95)
BLASLIB = -L/usr/local/lib -lblas_sf77
# テスト アプリにのみ必要です
g95 で SUPERLU-3.0 を設定する方法 (Guglielmo Pasa)
Makefile を変更します。
PLAT = g95xp
BLASLIB = -L/usr/local/lib -lblas_sf77
RANLIB = ランリブ
FORTRAN = g95 -ffixed-form -fno-underscoring
CDEFS = -DNoChange
g95 で UMFPACK を構成する方法 (Guglielmo Pasa)
UMFPACKv4.4/AMD/Make/Make.include を編集・修正
F77 = g95
F77FLAGS = -ffixed-form -fno-underscoring
…
CONFIG = -DBLAS_NO_UNDERSCORE
…
インクルード ../Make/Make.cygwin
次に、AMD/Make で Make.linux を Make.cygwin にコピーし、変更します。
CC = gcc
CFLAGS = -O2
…
LIB = -L/usr/local/lib -lblas_sf77 -lf95 # libf95.a を /lib にコピーする必要があります
# または /usr/local/lib 最初に !! C プログラムとのリンクで gcc によって必要とされます
次に AMD/ に移動し、make を実行します (matlab も使用する場合は、正しくインクルードする方法がまだわかりません!無効にしないと、ライブラリ libamd.a がビルドされた後にエラーが発生します。ライブラリが必要なだけです! make が mex を見つけられないというエラーが表示されます)。
次に UMFPACK に移動して実行します
hbを作る
libumfpack.a と hb の例をビルドします。次に、ライブラリを /usr/local/lib に、インクルード ファイルを /usr/local/include にコピーできます。
g95 で METIS-4.0 を設定する方法 (Guglielmo Pasa)
Makefile.in を編集
RANLIB = ランリブ
make を実行し、libmetis.a を /usr/local/lib/libmetis-4.0.a にコピーします。
g95 で MUMPS-4.3.2 を構成する方法 (Guglielmo Pasa)
Makefile.inc/ から Makefile.inc.generic と Makefile.inc.generic.SEQ をそれぞれ Makefile.inc と Makefile.inc.SEQ として MUMPS ソース ツリーのルートにコピーし、Makefile.inc を編集します (パラレル バージョン、それに応じて SEQ を次のように編集します)。ファイルで引用されている MPI 表示)
LMETISDIR = /usr/local/lib
LMETIS = -$(LMETISDIR) -lmetis-4.0
注文 = -Dmetis -Dpord
ORDERINGSF = -Dpord -Dmetis
…
FC = g95
RANLIB = ランリブ
SCALAP = -lscalapack \
/usr/local/lib/blacs_MPI-g95xp-0.a \
/usr/local/lib/blacsF77init_MPI-g95xp-0.a \
/usr/local/lib/blacs_MPI-g95xp-0.a
# MPI のディレクトリを含める
INCPAR = -I/usr/local/include
# MUMPS の並列バージョンで使用されるライブラリ: $(SCALAP) および MPI
LIBPAR = $(SCALAP) -L/usr/local/lib -lmpich -lpmpich -lmpich -lcrypto
# ここで BLAS ライブラリを定義します
LIBBLAS = -lblas_sf77
CDEFS = # 空!!
#コンパイラ オプション
OPTF = -O -fno-underscoring
g95 で Aztec 2.1 を構成する方法 (Guglielmo Pasa)
必要なファイルをダウンロードし (get_packages/netlib_mail を調べて必要なファイルを確認します。dblas1.f などは実際のソースではないことに注意してください。実際に必要なファイルを確認するには、これらのファイルの中を調べる必要があります)、get_packages に入れます。 . rip.exe を作成し、スクリプト process_netlib を実行します。
lib/Makefile.template を編集
通信 = シリアル
マシン = ジェネリック
MPI_INCLUDE_DIR = -I/usr/local/include
MPI_LIB = -L/usr/local/lib -lmpich -lpmpich -lmpich -lcrypto -lm
…
CC_TFLOP = gcc
FC_TFLOP = g95
AR_TFLOP = ar
RANLIB_TFLOP = ランライブラリ
TIME_TFLOP = md_timer_sun.c
CFORT_TFLOP = -Dmatched
CFLAGS_TFLOP = -O2
FFLAGS_TFLOP = -O2 -ffixed-form -fno-underscoring
Makefile.template の末尾は次のようになります。
アステカ: $(OBJ)
@echo “ライブラリ $(TARGET) を構築中”
@rm -f libaztec$(COMM).a
$(AR) ruv libaztec$(COMM).a $(OBJ)
@$(RNLIB) libaztec$(COMM).a
Makefile.template の最初の数行は次のようになります。1) MPI ライブラリの場合
COMM = MPI
マシン = TFLOP
MPI_INCLUDE_DIR = -I/usr/local/include
MPI_LIB = -L/usr/local/lib -lmpich -lpmpich -lmpich -lcrypto -lm
2) SERIAL ライブラリの場合
通信 = シリアル
マシン = TFLOP
MPI_INCLUDE_DIR =
MPI_LIB =
他は何も変更しないでください。app/ で同じことを行います
./set_makefiles
CDライブラリ
作る
cp libaztec.a /usr/local/lib
cp *.h /usr/local/include
CD ..
CDアプリ
作る
デモを実行します。
g95 プログラムを MATLAB とリンクする方法 (Aaron Schmidt)
MATLAB は、C または Fortran コードを組み込む簡単な方法を提供します。プログラマーは、C/Fortran と MATLAB の間で変数をやり取りするゲートウェイと呼ばれる小さなサブルーチンを作成する必要があります。コードは、通常、外部コンパイラを呼び出す MATLAB コマンド ‘mex’ を使用してコンパイルされます。コンパイルされたコードは、MATLAB 関数とまったく同じように使用できます。mex ファイルの作成の詳細については、 ヘルプ ファイルを参照してください。
G95 は公式にサポートされているコンパイラではありませんが、問題なく動作するようです。Fortran コンパイラは、[MATLAB ルート]/bin に格納されている mexopts.sh ファイル、または ~/.matlab のどこかに保存されているローカル コピーで指定されます。G95 を使用するには、mexopts.sh を開き、お使いの OS に関連するセクションに移動します。変数 ‘FC’ を変更して、G95 へのフル パスを指定します。また、libf95.a にリンクする必要があります。そうしないと、特定の組み込み関数を使用しようとすると MATLAB がクラッシュするため、それを ‘FLIBS’ 変数に追加します。他の変数は、必要な追加のフラグと最適化オプションに設定する必要があります。例として、Mac OS X および MATLAB 7 では、mexopts.sh の関連セクションは次のようになります。
FC=’/usr/local/g95-install/bin/powerpc-apple-darwin6.8-g95′
FFLAGS=’-ffree-form’
FLIBS=’-L/usr/local/g95-install/lib/gcc-lib/powerpc-apple-darwin6.8/4.0.0/ -lf95′
FOPTIMFLAGS=’-O’
FDEBUGFLAGS=’-g’
ノート
MATLAB との間でデータをやり取りする最も簡単な方法は、%VAL() コンストラクトまたは F2003 VALUE 属性を使用することです。
私は G95 を MATLAB 7 と Mac OS X でしかテストしていないので、見落としている可能性があります。MATLAB およびその他の Fortran90 コンパイラの使用に関する情報は Web 上にあり、役立つ場合があります。
MATLAB がクラッシュしないように、Fortran コードが c++ 例外をスローする extern “C” c++ 関数を使用する場合は、FFLAGS で -fexceptions を使用します。(ディミトリー・マークマン)
Windows で g95 と MATLAB を使用する (Ivo Houtzager)
次のプログラムが必要です。
MinGW
G95-MinGW
Gnumex ( gnumex.sourceforge.net )
G95-MinGW を MinGW のルート ディレクトリにインストールします (例: C:\MinGW) Gnumex をインストールします (例: C:\Gnumex に) パッチを C:\Gnumex にコピーし、ファイル gnumex.m および linkmex.pl にパッチを適用します。
patch -l < gnumex.patch
Matlab でパス C:\Gnumex を追加します。
>>path(パス,’C:\Gnumex’)
Matlab で “gnumex” を呼び出します。リンク用に Mingw を選択し、「コンパイル用の言語」で G95 を選択します。ドロップボックス。C:\MinGW が MinGW ルート ディレクトリでない場合は、「Mingw ルート パス」を調整します。詳細については、gnumex.sourceforge.net Gnumex と MinGW に関するコメントを参照してください。 2 および pentium4 の悪い結果を設定するコンパイラ。原因は、コンパイラの最適化 -mfpmath=sse です。この最適化を削除した設定「pentium4 -f」を追加しました。
g95 で IRIX モジュールを使用する方法 (Charles Castevens)
root として、ユーザーがロードする「g95」というモジュール ファイルを作成します。
touch /opt/modulefiles/g95
chmod a+r /opt/modulefiles/g95
vi /opt/modulefiles/g95
#%モジュール################################################ ##
# http://ftp.g95.org/g95-mips-irix.tgz デフォルトのモジュールファイル
# IRIX バージョン Fri Jul 21 21:14:30 EDT 2006
#
proc モジュールヘルプ { } {
puts stderr “g95 モジュール ファイルは、使用するために必要なデフォルト パスを定義します。
#g95”
puts stderr “\”module load g95\” と入力して g95 をロードしてから”
put stderr “\”module list\” は、g95 モジュールファイルが
#ロードされました。」
}
set _module_name [モジュール情報名]
set is_module_rm [モジュール情報モードの削除]
G95_CURPATH /opt/g95/bin を設定します
prepend-path PATH $G95_CURPATH
http://ftp.g95.org/g95-mips-irix.tgz を /usr/tmp にコピーしてから、
CD/usr/tmp
mkdir -p /opt/g95/bin
mkdir -p /opt/g95/lib/gcc-lib/mips-sgi-irix6.5/4.0.1
gunzip -c g95-mips-irix.tgz | タール -xvf –
cd g95-install/bin
mv mips-sgi-irix6.5-g95 /opt/g95/bin
cd ../lib/gcc-lib/mips-sgi-irix6.5/4.0.1
mv * /opt/g95/lib/gcc-lib/mips-sgi-irix6.5/4.0.1
cd /opt/g95
chown -R nobody.nobody . *
chmod a+rx . 置き場
CDビン
ln -s mips-sgi-irix6.5-g95 g95
cd ../lib/gcc-lib
chmod a+rx . ..
cd mips-sgi-irix6.5/4.0.1
chmod a+rx . .. *
chmod ax *.a *.o *.1
通常の操作を行った後のユーザー プロンプトから
ソース/opt/モジュール/モジュール/init/csh
モジュールロードモジュール
プロンプトで、または .cshrc または .tcshrc で; 見る
grelnotes モジュール &
詳細については、「次の章」をクリックしてください。モジュールがマシン上で動作するようになると、ユーザーはすぐにアクセスできるようになります。
モジュールロード g95
ログインすると、g95 の準備が整います。
g95 -O3 -s プログラム.f -o プログラム
。/プログラム
SciTE で g95 を使用する方法 (Doug Cox)
無料の SciTE エディターは、Fortran を含む多くのプログラミング言語で動作します。SciTE は、Linux システムと Windows システムの両方で利用できます。Windows バージョンは、デフォルトで Lahey コンパイラ用に構成されています。Msys/MinGW および Windows 上の Cygwin に含まれる make の動作バージョンを備えたシステムでは、SciTE を使用して、fortran ファイルの編集、g95 でのコンパイル、および実行可能ファイルのテストを行うことができます。g95 で使用する SciTE をセットアップする方法は次のとおりです。
http://scintilla.sourceforge.net/SciTEDownload.htmlから SciTE をダウンロードします。
適当なディレクトリに解凍してインストールします。
[オプション] メニューにリストされている fortran.properties ファイルを編集します。コンパイラ名を次のように変更します。
fc77=g95
fc90=g95
コンパイル用のコマンドを含む fortran.properties ファイルの行を次のように変更します。
command.compile.*.f=$(fc77) -I.\ -L.\ $(1) $(2) -c $(FileNameExt) $(3) $(4) -info
command.compile.*.for=$(fc77) -I.\ -L.\ $(1) $(2) -c $(FileNameExt) $(3) $(4) -info
command.compile.*.f90=$(fc90) -I.\ -L.\ $(1) $(2) -c $(FileNameExt) $(3) $(4) -info
command.compile.*.f95=$(fc90) -I.\ -L.\ $(1) $(2) -c $(FileNameExt) $(3) $(4) -info
MinGW と Msys を使用する Windows システムの場合、c:\Msys\1.0\bin ディレクトリ (またはシステム上の同等のディレクトリ) を PATH に追加して、SciTE が Msys の make プログラムを見つけられるようにし、必要に応じて c:\mingw を追加します。 \bin ディレクトリを PATH に追加して、SciTE が g95 を検出できるようにします。
SciTE では、[ツール] メニューからコードをコンパイルして実行できます。ファイルをコンパイルし、make を使用してプロジェクトをビルドし、SciTE シェルで実行可能ファイルを実行するためのコマンドがあります。
g95 の -M オプションを使用する
g95 でコンパイルする場合、-M オプションを使用して Makefile を作成できます。このオプションを使用すると、g95 は Makefile が必要とする形式で依存関係を書き出します。出力は、make プログラムが必要とする Makefile で使用できます。この機能により、g95 用の makefile の作成が容易になります。Makefile をソース ファイルと同じディレクトリに配置します。SciTE の [ツール] メニューで [ビルド] をクリックするだけで、make を実行できます。ビルドが成功した場合、[実行] をクリックすると、コンパイルされたプログラムが実行されます。
Python プログラムとのインターフェース方法 (Bill McLean)
次のインターフェイスでサブルーチン foo を呼び出したいとします。
サブルーチン foo(n, a)
整数、インテント (イン) :: n
リアル、インテント (アウト) :: a(n,n)
サブルーチン foo の終了
最初の方法: ctypes を使用:
numpyをインストールします(>=バージョン 1.0)。
Pythonのバージョンが 2.5 未満の場合は、ctypes をインストールするか、現在の python バージョン (標準ライブラリに ctypes が含まれています) をインストールします。「make altinstall」を使用すると、既存の古いバージョンと一緒に新しい Python バージョンを使用して、Python 依存パッケージで発生する可能性のある問題を回避できることに注意してください。
foo.f95 を共有ライブラリにコンパイルします。
g95 -共有 -fPIC foo.f95 -o foo.so
ルーチンのシンボルの名前を確認します
nm foo.so | grep foo
この名前は、foo が外部プロシージャの場合は foo_ になりますが、モジュール bar に含まれる foo の場合は bar_MP_foo_ になります。BIND(C) 機能を使用して、シンボルの実際の名前を制御できます。
foo の Python ラッパーを次のように記述します。
numpy インポートから *
from ctypes import c_int, POINTER, byref
foolib = ctypeslib.load_library(‘foo’, ‘.’)
_foo =foolib.foo_ #または_foo =foolib.bar_MP_foo_
_foo.restype = なし
デフォルト foo(n):
a = zeros((n,n,), dtype=float32, order=’FORTRAN’)
arg = ctypeslib.ndpointer(dtype=float32, shape=(n,n,), flags=’FORTRAN’)
_foo.argtypes = [POINTER(c_int), arg]
cn = c_int(n)
_foo(byref(cn), a)
返す
a = フー(4)
2 番目の方法: f2py を使用する
fortran-to-python インターフェイス ジェネレーターである f2py を含む numpy (バージョン>=1.0) をインストールします。行う
f2py -c –help-fcompiler
f2py が g95 を認識することを確認します。
f2py を使用して署名ファイル foo.pyf を生成します。
f2py foo.f95 -m foo -h foo.pyf
より複雑な例では、foo.pyf を手動で調整する必要がある場合があります。
再び f2py を使用して、Python 拡張モジュール foo.so を自動的に作成します。
f2py -c –fcompiler=g95 foo.pyf foo.f95
ここで、 –fcompiler フラグを省略すると、f2py はファイル numpy/distutils/fcompiler/__init__.py (現在は g77) の _default_compilers 変数によって決定される既定のコンパイラを使用します。
Python からの foo の呼び出しが簡単になりました。
numpy インポートから *
インポート フー
print foo.foo.__doc__ # f2py によって生成された Python インターフェイスを表示します
= foo.foo(4)
g95 での Scons の使用 (Doug Cox)
Scons ビルド システムはhttp://www.scons.orgから入手できます。Sconsは「ソフトウェア構築」を意味します。これは「make」の代替です。Scons には Python がインストールされている必要があります。引数なしで呼び出されると、Scons は「SConstruct」という名前のファイルを探します。これも Python スクリプトです。
デフォルトでは、Scons の Windows バージョンは Microsoft C コンパイラで動作するように設定されていますが、他の多くの種類のプロジェクトのビルドにも使用できます。以下は、Msys シェルの g95 の MinGW バージョンで動作する SConstruct ファイルの例です。この例では、ファイル foo1.f90 .. foo4.f90 がモジュール ファイルであり、foo.f90 がモジュールを使用するメイン プログラムです。ファイル foo4.f90 には、foo2.f90 が必要とするモジュールが含まれているため、foo2.f90 の前にリストされています。Scons は、以前のビルド以降に変更されたソース ファイルを検出し、必要なものだけを再構築します。
# Msys/MinGW での Scons のビルド スクリプトの例
# Msys シェルで、ソース ディレクトリに cd し
ます # このスクリプトをファイル名 SConstruct で保存します
# ビルドするには、「c:/python25/scripts/scons」と入力します
import os
env = Environment(プラットフォーム = ‘win32’、
ENV = os.environ、
ツール = [‘mingw’]、
FORTRAN = ‘g95’、
FORTRANFLAGS = ‘-O3’、
CC = ‘gcc’、
LINK = ‘g95’ )
env.Program( ターゲット= ‘foo.exe’,
source = [
‘foo1.f90’, # モジュール ソース ファイル
‘foo4.f90’, # foo2.f90 で使用されるモジュール ソース ファイル
‘foo2.f90’, # モジュール ソース ファイル
‘foo3.f90’ 、# モジュールソースファイル
‘foo.f90’ # メインプログラム
])
# 詳細については、以下を参照してください:
# http://www.scons.org/doc/HTML/scons-man.html