c-Make只运行没有参数的“gcc”

c-Make只运行没有参数的“gcc”,c,gcc,makefile,C,Gcc,Makefile,我正在学习如何使用C和Make,但是Make让我毛骨悚然。当我使用我创建的所有目标运行make时,它会失败,运行gcc时没有任何参数,除了其中一个随机运行就可以了。以下是我尝试使用大多数目标构建时发生的情况: $ make strvector.o gcc gcc: fatal error: no input files compilation terminated. make: *** [vector.o] Error 4 当我运行一个有效的程序时: $ make word.o gcc -Wa

我正在学习如何使用C和Make,但是Make让我毛骨悚然。当我使用我创建的所有目标运行make时,它会失败,运行gcc时没有任何参数,除了其中一个随机运行就可以了。以下是我尝试使用大多数目标构建时发生的情况:

$ make strvector.o
gcc
gcc: fatal error: no input files
compilation terminated.
make: *** [vector.o] Error 4
当我运行一个有效的程序时:

$ make word.o
gcc -Wall -g -ansi -pedantic -c -o word.o word.c
这是我的makefile:

CC = gcc
CFLAGS = -Wall -g -ansi -pedantic -c -o $@ $^
LD = gcc
LDFLAGS =

fw: fw.o vector.o hashtable.o strvector.o
        $(LD) $(LDFLAGS) -o fw vector.o hashtable.o strvector.o word.o

fw.o: fw.c vector.o hashtable.o strvector.o word.o
        $(CC) $(CFALGS)

vector.o: vector.c word.o
        $(CC) $(CFALGS)

hashtable.o: hashtable.c vector.o word.o
        $(CC) $(CFLAGS)

word.o: word.c
        $(CC) $(CFLAGS)

strvector.o: strvector.c
        $(CC) $(CFALGS)
我一辈子都搞不懂为什么word.o构建得很好,但没有其他东西。如果有人能帮忙,我将不胜感激


-编辑-我打错了。编写CFALG而不是CFLAG。不知道我怎么会错过那一次。谢谢大家

您在编译命令中遗漏了文件名

strvector.o: strvector.c
    $(CC) -c $(CFLAGS) -o $@ $<

$@被替换为当前目标,$没有定义CFALGS,因此它变成了空字符串。最好设置CFLAGS=-Wall-g-ansi-pedantic,不要定义任何规则。Make很好地使用隐式规则,并且-o。。。并且要操作的文件不属于CFLAGS。您分配了CFLAGS,但没有分配CFALGS。这是一个输入错误。带有$CC$CFLAGS的命令行没有任何文件名参数。