2012-03-25 8 views
1

メイクファイルにライブラリを組み込む際にいくつか問題があります。ライブラリをメイクファイルに含める際にエラーが発生しました

ライブラリnlopt/usr/libにインストールされていると私は、コマンドラインからコンパイルするとき、私のプログラムが正常に動作します:

gfortran -I/usr/include main.f90 -L/usr/lib -lnlopt -lm -o exec

は、しかし、私はメイクファイルを使用する必要があります。

main.f90:19: Error: Can't open included file 'nlopt.f'

あなたは、バグを見つけるのに助けてくださいでした:私は取得するには、以下の一つは罰金のようですが、それは動作しませんか?


INCLUDES = -I/usr/include 

LFLAGS = -L/usr/lib 

LIBS = -lnlopt -lm 

objects = main.o 

f90comp = gfortran 

exec: $(objects) 
    $(f90comp) $(INCLUDES) -o exec $(objects) $(LFLAGS) $(LIBS) 

main.o: main.f90 
    $(f90comp) -c main.f90 

clean: 
    rm *.o *.mod exec 
    rm $(objects) 

# End of the makefile 

+2

ファイル 'nlopt.f'はどこにありますか? 'usr/include'にありますか?コンパイラが引数の順序を気にしないのは確かですか? (私は* exact *同じ順序で確実にしようとします) – Beta

+1

'make'の出力全体を表示できますか?私はあなたのエラーメッセージが有益である直前の行を感じています。 – sarnold

+1

makeが実行しようとしているコマンドだけを表示するように 'make -n'を試してみると便利なことがあります。 – mgilson

答えて

4

あなたのエラーメッセージは、コンパイル時に使用できない、あなたのmain.f90に含めているnlopt.f、ことを示しています($(f90comp)とRMの前に、タブがあります)。このファイルへのパスをコンパイラに提供する必要があります。パスを提供しながら、あなたが一度にコンパイルとリンクをので、あなたは、あなたの1つのライナーで正しくこれをやっている:

gfortran -I/usr/include main.f90 -L/usr/lib -lnlopt -lm -o exec 

この作品とmakeがないので、nlopt.fが明らかにmain.f90と同じディレクトリに座っていません、むしろ/usr/includeにある。メイクファイルのコンパイル行を変更する必要があります:

main.o: main.f90 
    $(f90comp) -I/usr/include -c main.f90 
関連する問題