Linux 中的make/makefile

一:背景


make是一个命令工具,是一个解释makefifile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefifile都成为了一 种在工程方面的编译方法。
一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefifile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。
makefifile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
make是一条命令,makefifile是一个文件,两个搭配使用,完成项目自动化构建。

二:示例代码

Linux 中的make/makefile_第1张图片

观察下述现象:

Linux 中的make/makefile_第2张图片

在第二次使用 make 的时候,提示我们 mybin 已经是最新的,由此可以推断和时间有关系。

在文件形成时,一定是先有的 test.c 文件,然后才有的 mybin 文件,所以(即第1次make):

源文件(test.c)的修改时间 < mybin 文件的修改时间


补充:

在 Linux 系统中,stat 命令用于显示指定文件或文件系统的文件状态信息,包括文件的类型、权限、大小、所属用户和组、访问时间、修改时间、创建时间等详细信息。它可以用于检查文件的状态以及了解文件的属性。

格式为:stat + 文件名

stat makefile


stat test.c

通过 stat 命令查看文件的状态信息(第2次make):

Linux 中的make/makefile_第3张图片

但此时,我们发现第2次 make 时,源文件(test.c)的修改时间 > mybin 文件的修改时间

此时,需要我们重新编译形成可执行程序,才重新使用 make。

如下图所示:

Linux 中的make/makefile_第4张图片 


 make/makefile 总是不让我们重新编译我们的代码???提高编译效率

怎末做到的(如何知道代码的新/旧)???

Linux 中的make/makefile_第5张图片


解决完 make 不能多次使用的原因,那么为什莫 make clean 就可以多次使用呢???

原因是:我们将它设置了伪目标,用  .PHONY 修饰。

              修饰伪目标的特性是,总是被执行的,不会被任何情况拦截。

那么,我们是否可以对 mybin 进行该方法???

Linux 中的make/makefile_第6张图片


你可能感兴趣的:(linux,运维,服务器)