2017-12-17 2 views
1

Cでメイクファイルを作成しようとしていますが、問題が発生しています。 私はメインの.c、関数実装を保持する.c、関数宣言を保持する.hの1つを持っています。 makefileを実行しようとすると、致命的なエラーが発生します。ここ は私のメイクです:私が得るCでファイルを致命的なエラーにする

INCL = prog.h 
SRC = prog.c prog_fun.c 
OBJ = $(SRC:.c=.o) 
EXE = prog 


CC = gcc 
CFLAGS = -c 
RM  = rm -rf 

all: prog 

prog: prog.o prog_fun.o 
    gcc -o prog prog.o prog_fun.o 

prog.o: prog.c 
    gcc -c prog.c 

prog_fun.o: prog_fun.c prog.h 
    gcc -c prog.c 

clean: 
    $(RM) $(OBJ) $(EXE) 

エラーはこれです:

gcc -c prog.c 
prog.c:11:19: fatal error: prog.h: No such file or directory 
compilation terminated. 
Makefile:17: recipe for target 'prog.o' failed 
make: *** [prog.o] Error 1 

誰もがこれで私を助けてくださいことはできますか?あなたはこの

prog_fun.o: prog_fun.c header.h

を使用してやろうとしている何

+0

これは非常に不明です。あなたはMakefileに存在しないファイルを言及しています。あなたのMakefileはあなたが言及していないファイルを参照しています。 – klutt

+1

ヘッダファイルはどこにありますか?その名前は何ですか?コマンドラインで実行可能ファイルをビルドしようとするとどうなりますか? (一般的に、* Makeなしで*行う方法が分からない限り、Makeで何かできません) – Beta

+0

ヘッダーファイルは他の.cファイルと同じ場所にあります。その名前はprog.hです。私がmakeを使わずに実行しようとすると、プログラムはコンパイルされ、正しく実行されます。 – user9091498

答えて

1

それは

[email protected]:~$ vi makefile 
INCL = header.h 
SRC = prog.c prog_fun.c 
OBJ = $(SRC:.c=.o) 
EXE = prog 


CC = gcc 
CFLAGS = -c 
RM  = rm -rf 

all: prog 
prog: prog.o prog_fun.o 
     gcc -o prog prog.o prog_fun.o 
prog.o: prog.c 
     gcc -c prog.c header.h 
prog_fun.o: prog_fun.c 
     gcc -c prog_fun.c header.h 

clean: 
     $(RM) $(OBJ) $(EXE) 

として次の実行を、あなたのメイクファイルを変更のみ

prog_fun.o: prog_fun.c 

する必要があります

[email protected]:~$ make 
gcc -c prog.c header.h 
gcc -c prog_fun.c header.h 
gcc -o prog prog.o prog_fun.o 

これはうまくいきます(手入力スペースではなく、タブキーでなければなりません)。

+0

あなたの助けをありがとうが、それでも私は非常に似たエラーが出る::(gcc -c prog.c prog.h gcc:エラー:prog.h:そのようなファイルやディレクトリがありません Makefile:18:レシピ'prog.o'が失敗しました make:*** [client.o] Error 1 – user9091498

+0

'prog.h'を' prog.h'のように 'prog.h'を' header.h'のように変更しました。 'prog.o'は' dot'という名前の前と同じです。 'prog.h'を' header.h'で置き換えてください。これまでに使っていた場所であれば動作します。 – achal

+0

@ user9091498あなたはどうですか? – achal