我一直试图制作一个正确的makefile一段时间,但我一直得到错误" make:***没有规则来制作目标`all'。停止"
我有一个主程序:mpasswdsort.c 和mpasswdsort使用的c文件,它也带有一个标题: list.c和list.h
我的makefile:
CC=gcc
CFLAGS=-Wall -pedantic -ansi
all: mpasswdsort
server: mpasswdsort.o list.o
$(CC) mpasswdsort.o list.o -o mpasswdsort
mpasswdsort.o: mpasswdsort.cpp
$(CC) $(CFLAGS) mpasswdsort.cpp
list.o: list.cpp
$(CC) $(CFLAGS) list.cpp
clean:
rm -f server client *.o core
我不确定makefile中是否有错误,或者makefil是不应该是.txt文件。
答案 0 :(得分:3)
您出现的错误消息表明make
没有看到任何构建目标“all”的规则。当没有makefile时,它与GNU make
发出的诊断完全相同。由于您提供的makefile内容 do 包含目标“all”的规则,因此我得出结论make
没有看到它们。
这可能是因为makefile位于不同的目录中,因为默认情况下它的名称与make
次尝试的名称不同(Makefile
或makefile
是常规的; GNU的版本为{ {1}}还检查make
),或者因为访问控制问题导致GNUmakefile
无法读取文件。既然你说了
我不确定makefile中是否有错,或者makefil是不是 应该是一个.txt文件。
,最可能的结论是(至少)文件名错误。 Makefile是文本文件,但文本文件名不一定以“.txt”结尾。实际上,在Linux和其他UNIX上,大多数都没有。 Makefile不应该有这样的扩展名,但从技术上讲,你可以使用make
选项告诉-f
要使用的makefile名称。