2012-01-13 19 views
13

を探す必要があるディレクトリを指定します。はのgfortranは次のように私は現在、(このようなモジュール<code>bar</code>に依存して、メインプログラム<code>foo</code>など)モジュールに基づいたプログラムをコンパイルしたモジュール

gfortran -c bar.f90 
gfortran -o foo.exe foo.f90 bar.o 

foo.f90bar.f90をしているとき、これが正常に動作します同じディレクトリ。 use barfoo.f90に電話すると、gfortranがbar.oを探すディレクトリを指定するにはどうすればよいですか?コンパイラが具体的にはbar.oをリンクするよう指定するのは望ましくありません。

+0

gfortran -I/path/to/the/obj/fileを試しましたか? –

答えて

19

モジュールファイル(.modファイル)がどこにあるかは、-Iコンパイラフラグで確認できます。さらに、-Jコンパイラフラグを使用して、コンパイルされたモジュールをどこに置くかをコンパイラに伝えることができます。 gfortran man pageの「ディレクトリ検索のオプション」セクションを参照してください。

私はオブジェクト(.oファイル)とモジュールファイルの両方を同じディレクトリに配置していますが、すべてのソースファイルとは別のディレクトリに配置しています。例えば、

SRC = /path/to/project/src 
OBJ = /path/to/project/obj 
BIN = /path/to/project/bin 

gfortran -J$(OBJ) -c $(SRC)/bar.f90 -o $(OBJ)/bar.o 
gfortran -I$(OBJ) -c $(SRC)/foo.f90 -o $(OBJ)/foo.o 
gfortran -o $(BIN)/foo.exe $(OBJ)/foo.o $(OBJ)/bar.o 

は、コマンドライン上でタイプする多くの労力のような上記見えますが、私は一般的に私のmakefileでこのアイデアを使用しています。

これに相当するインテルFortranコンパイラのフラグは-I-moduleです。基本的にifortは、-Jオプションを-moduleに置き換えます。モジュールのあとにスペースがありますが、Gの後にはありません。

7

モジュールを含むFortranソースコードをコンパイルするときは、.mod(通常はファイルはモジュール名と同じです)ファイルがオブジェクトファイルとともに作成されます。 .modファイルは、そのモジュールを使用しているソースファイルと同じディレクトリにあるべきか、-Iフラグを使用してコンパイル時に指摘されなければならない:に存在する必要が.MOD

gfortran -c bar.f90 
gfortran -c foo.f90 -I$PATH_TO_MOD_FILE 
gfortran -o foo.exe foo.o bar.o 

注foo.f90のコンパイル時間。

関連する問題