makefile - make:***没有规则可以全部制作目标'停止

时间:2017-09-08 18:16:18

标签: makefile makefile-errors

我一直试图制作一个正确的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文件。

1 个答案:

答案 0 :(得分:3)

您出现的错误消息表明make没有看到任何构建目标“all”的规则。当没有makefile时,它与GNU make发出的诊断完全相同。由于您提供的makefile内容 do 包含目标“all”的规则,因此我得出结论make没有看到它们。

这可能是因为makefile位于不同的目录中,因为默认情况下它的名称与make次尝试的名称不同(Makefilemakefile是常规的; GNU的版本为{ {1}}还检查make),或者因为访问控制问题导致GNUmakefile无法读取文件。既然你说了

  

我不确定makefile中是否有错,或者makefil是不是   应该是一个.txt文件。

,最可能的结论是(至少)文件名错误。 Makefile是文本文件,但文本文件名不一定以“.txt”结尾。实际上,在Linux和其他UNIX上,大多数都没有。 Makefile不应该有这样的扩展名,但从技术上讲,你可以使用make选项告诉-f要使用的makefile名称。