我正在尝试用C创建一个makefile,但我遇到了一些问题。 我有我的主.c,一个.c保存函数实现,一个.h保存函数声明。 当我尝试运行makefile时,我收到致命错误。 这是我的makefile:
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
有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
使用此
尝试做什么 prog_fun.o: prog_fun.c header.h
应该只是
prog_fun.o: prog_fun.c
将您的make文件修改为
xyz@xyz-PC:~$ 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)
接下来运行它
xxyz@xyz-PC:~$ make
gcc -c prog.c header.h
gcc -c prog_fun.c header.h
gcc -o prog prog.o prog_fun.o
我希望它现在可以正常工作并确保缩进是正确的(不是手动空格,它应该是tab键)