我一直在尝试制作一个正确的makefile,但是我一直收到以下错误信息:
“make: *** 没有可以制作目标“all”的规则。停止。”
我的主程序是mpasswdsort.c,还有一个被mpasswdsort使用的c文件,它也带有一个头文件:list.c和list.h。
我的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出错了还是makefile本身就不应该是一个.txt文件。
all
包含mpasswdsort
,但是你没有为mpasswdsort
定义规则。 - KevinDTimmmake
可以通过其内置规则之一找到构建mpasswdsort
的方法,则无需提供显式规则。在这种情况下,它将尝试从mpasswdsort.o
构建它,而它确实有一个明确的构建规则。我猜那可能会链接失败,但诊断结果与问题中呈现的结果大不相同。 - John Bollingermake server
(并且all
目标的 makefile 问题已经解决),那么每次运行make server
时,mpasswdsort
程序将从两个目标文件重新链接,因为server
目标的规则不会创建名为server
的文件。如果你运行make mpasswdsort
,那么make
将尝试从单个文件构建程序——从mpasswdsort.cpp
构建的mpasswdsort.o
文件——并且可能会失败,因为没有包含list.o
。你最终需要解决这个问题(因为make all
将尝试使用单个文件构建mpasswdsort
)。 - Jonathan Leffler