我正在学习如何使用 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 构建得很好,但其他任何东西都构建不好。如果有人可以提供帮助,我们将不胜感激。
--编辑-- 我打错字了。编写 CFALGS 而不是 CFLAGS。不知道我是怎么错过那个的。谢谢大家!
最佳答案
您在编译命令中遗漏了文件名。
strvector.o: strvector.c
$(CC) -c $(CFLAGS) -o $@ $<
$@
被替换为当前目标 $<
替换为当前依赖项。
关于c - Make 仅运行 'gcc',不带任何参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48471345/