2016-08-08 19 views
0

メイクファイルのコンパイルに問題があり、どこでこれを診断し始めるべきかわかりません。これは、同僚のOS Xシステム用に生成されたもので、私は自分のLinuxシステムに実装しようとしています。それはOS Xのコンピュータで働いた。私はコンピュータ上でどこに住んでいるかを表すために図書館の場所を更新しました - これはおそらく、エラーの最大の原因でしょうか?gfortran makefile 'インクルードファイルを開くことができません'

含まれるファイル:file0.i、... fileN.iはすべてmakefileと同じディレクトリにあります。

残りの部分を取得して博士号を取得したり、世界や何かを保存したりできる最初のオブジェクトファイルをコンパイルできるかどうかは確かです。

ファイルのスニペットは、次のとおりです。

# %W% %G% 
# Makefile for directory ~/Documents/workstuff/project/program   
# 
fflags = -O3 -I. -I/usr/local/include -frecord-marker=4 -ffree-form 
##  -fdefault-real-8 -fdefault-double-8 
lflags = -L/usr/local/lib -lnetcdf -lnetcdff 
# for debugging, use these options 
fflags = -g 
lflags = -g 
chem = ~/Documents/workstuff/project/chem  


main.o: $(chem)/code/main.f file0.i file1.i file2.i 
    gfortran -c $(fflags) $(chem)/code/main.f 

そして私は、次のエラーが表示さ:

~/Documents/workstuff/project/program/chem/code/main.f:11: Error: Can't open included file 'file0.i' 
makefile:14: recipe for target 'main.o' failed 
make: *** [main.o] Error 1 

を私はそれが実行可能な問題かもしれないと思ったので、私たちは644から744に行ってきました:

username$ file file0.i 
file0.i: ASCII text 


username$ stat -c '%A %a %n' file0.i 
-rwxr--r-- 744 file0.i 

まだ同じエラーです。

username$ nf-config --fflags 
-I/usr/local/include 
username$ nf-config --flibs 
-L/usr/local/lib -lnetcdff -lnetcdf -lnetcdf 

何の価値について、file0.i私はもちろん、オンラインを共有するためのナンセンス番号で満たされている、以下が含まれています:

$Id: file0.i,v 1.12 2012/12/31 04:25:23 username Exp $ 
    PARAMETER (NLT=19,NHT=51,DZETA=0.5/3.,Psurf=100.) 
    PARAMETER (NLT1=NLT+1,NHT1=NHT+2,NLT2=3*NLT+1,NHT2=4*NHT+1) 
    PARAMETER (NDYEAR=33,NTN=75,NTCV=14,NLV=21,NPOL=8,NGSP=3) 
    PARAMETER (NDIST=111,TD1=110.,NVC=1,NVSP=1,NVTIME=3) 
私のフラグが正しい場所を指していることを再確認してください

誰にも明らかなことは何ですか? Cのソースファイルが含まれている場合は、私は非常によくgfortranを知らないので、私は完全に間違っているかもしれないが、gccため

+0

エラーをトリガするコマンドとは何ですか? 'file0.i'は' main.f'ファイルとの関係でどこに住んでいますか? –

答えて

0

#include <foo.h> 

gcc-I.で呼び出された場合に、foo.hはで検索されますソースファイルと同じディレクトリで、gccからのディレクトリにはありません。例:

$ ls foo 
bar.c bar.h 
$ cat foo/bar.c 
#include <bar.h> 

int main(int argc, char **argv) { 
    return 0; 
} 
$ gcc -I. foo/bar.c 
foo/bar.c:1:10: error: 'bar.h' file not found with <angled> include; use "quotes" instead 
#include <bar.h> 
     ^~~~~~~ 
     "bar.h" 
1 error generated. 
$ gcc -Ifoo foo/bar.c 
$ 

だから、それはあなたのソースファイルと同じディレクトリにヘッダファイルを置くか<path>はあなたからgfortranを呼び出す場所の絶対パスです-I<path>を使用する必要があることである可能性があります。

関連する問題