main.o:main.c functionsLab1.c functionsLab1.h
    gcc -c main.c
functionsLab1.o: functionsLab1.c functionsLab1.h
        gcc-c functionsLab1.c

现在,当我运行 "make "命令时,它只执行makefile中的第一个命令。

我怎样才能一次运行所有的命令? 提前感谢 :)

我试着输入 "make all "命令,但显示了一个错误。

3 个评论
阅读Make的文档。Makefile中的第一个目标是默认的。
如果你用main.o的命令来构建gcc -c main.c,似乎你对functionsLab1.c没有依赖性。 你应该对依赖关系的声明加以注意。
c
linux
unix
makefile
terminal
TheBeast3334
TheBeast3334
发布于 2022-10-28
1 个回答
William Pursell
William Pursell
发布于 2022-10-28
已采纳
0 人赞同

make能够构建你需要的东西,但前提是你要告诉它正确的依赖关系。 特别是,你当前的 Makefile 在依赖关系方面是撒谎的,因为main.o根本不依赖functionsLab1.c。 相反,你试图构建的最终可执行文件依赖于functionsLab1.o。 你也许可以让你的整个Makefile。

main: main.o functionsLab1.o

(是的,就是一行。)。这忽略了对头文件的依赖性,但它应该对你有用。 让make使用它的默认规则;它们非常好。 如果你想包括对头文件的依赖,可以这样做。

main: main.o functionsLab1.o
main.o: main.c  functionsLab1.h
functionsLab1.o: functionsLab1.c  functionsLab1.h

如果出于某种原因,你真的想明确(你不会!),你可以这样做。

main: main.o functionsLab1.o
        $(CC) -o $@ $?   # Warning: incomplete.  See note below