C语言 MakeUtility创建对象文件,尽管我没有在makefile中定义它们的目标

ddarikpa  于 2023-02-18  发布在  其他
关注(0)|答案(1)|浏览(122)

我写了一个简单的makefile来编译我的C程序。我有一个main.cfunctions.c文件。我的makefile看起来像这样:

main : main.o functions.o
    gcc main.o functions.o -o main

clean : 
    rm *.o main

正如您所看到的,我没有为main.o和functions.o定义目标,但是当我运行make时,仍然会生成可执行文件。
你能告诉我为什么make实用程序没有产生错误吗?

xytpbqjk

xytpbqjk1#

GNU Make有一个catalog of built-in rules来从依赖项构建特定的文件。在这个例子中,你的依赖项main.o和functions.o丢失了,它从模式规则中推断出它是从.c文件构建的。还有一个链接规则,所以你应该能够指定:

.PHONY: clean

main: main.o functions.o

clean: 
    rm -f *.o main

make的部分值是standard targets,因此您应该考虑添加与您的项目相关的值。

相关问题