我刚刚开始学习制作,我遇到了一些麻烦。我想创建一个名为sortfile的可执行文件。以下是相关文件:sortfile.c fileio.c fileio.h
sortfile.c
和fileio.c
都使用fileio.h
。
这是我的makefile:
1 CC = gcc
2 CFLAGS = -g -Wall
3
4 default: sortfile
5
6 sortfile: sortfile.o fileio.o $(CC) $(CFLAGS) -o sortfile sortfile.o fileio.o
7
8 sortfile.o: sortfile.c fileio.h $(CC) $(CFLAGS) -c sortfile.c
9
10 fileio.o: fileio.c fileio.h $(CC) $(CFLAGS) -c fileio.c
11
12 clean:
13 $(RM) sortfile *.o*~
我收到以下错误:
make: *** No rule to make target `gcc', needed by `sortfile.o'. Stop.
答案 0 :(得分:3)
Makefile的格式为:
target: dependency1 dependency2
rule (command to build)
您将该命令列为依赖项集,因此make
想要在gcc
满足sortfile.o
之前尝试构建sortfile.o: sortfile.c fileio.h $(CC) $(CFLAGS) -c sortfile.c
。
而不是:
sortfile.o: sortfile.c fileio.h
$(CC) $(CFLAGS) -c sortfile.c
你需要:
CFLAGS+=-g -Wall
all: sortfile
sortfile: sortfile.o fileio.o
请注意,通常你真正想要的只是更简单的事情:
Makefile
由于隐式规则(see also),此简要{{1}}将与GNU Make一起按预期工作。