c - Make 仅运行 'gcc',不带任何参数

标签 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 -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/

相关文章:

c - 将数组中的元素右移 1

gcc - 禁止将警告视为错误 (cc1.exe)

c++ - Makefile: "No rule to make target..."有多个工作目录

c++ - 错误 : ‘log2’ is not a member of ‘std’

c++ - 在单独的文件夹中构建包含源和 header 的 makefile

c - 在片段着色器 cg/Unity 中照亮模型(立方体、球体……)

c - NetBeans 中的调试错误

c - my_sizeof 宏不适用于枚举数据类型

c - printf() 中赋值运算符的问题

python - swig 生成的代码链接到错误的 python 安装