我已经尝试制作正确的 makefile 一段时间了,但我不断收到错误
“make:*** 没有规则可以使目标‘全部’。停止。”
我有一个主程序:mpasswdsort.c 和 mpasswdsort 使用的 c 文件,它还带有一个标头:list.c 和 list.h
我的生成文件:
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
Run Code Online (Sandbox Code Playgroud)
我不确定 makefile 是否错误或者 makefile 是否不应该是 .txt 文件。
Joh*_*ger 12
您提供的错误消息表明make没有看到任何构建目标“all”的规则。make这与 GNU在根本没有 makefile 时发出的诊断完全相同。由于您提供的 makefile 内容确实包含目标“all”的规则,因此我得出的结论make是没有看到它们。
这可能是因为 makefile 位于不同的目录中,因为它的名称与make默认尝试的名称不同(Makefile或者makefile是常规名称;GNU 的版本make也会检查GNUmakefile),或者因为访问控制问题阻止make读取该文件。既然你评论了
我不确定 makefile 是否错误,或者 makefil 是否不应该是 .txt 文件。
,最可能的结论是(至少)文件名是错误的。Makefile 是文本文件,但文本文件名不一定以“.txt”结尾。事实上,在 Linux 和其他 UNIX 上,大多数都没有。Makefile 不应该有这样的扩展名,但从技术上讲,您可以使用该-f选项来告诉make要使用的 makefile 的名称。