• Linux 中的make/makefile


    一:背景


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

    二:示例代码

    观察下述现象:

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

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

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


    补充:

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

    格式为:stat + 文件名

    1. stat makefile
    2. stat test.c

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

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

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

    如下图所示:


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

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


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

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

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

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


  • 相关阅读:
    BSV上的高效 zk-SNARK:技术解释
    【抬杠C#】如何实现接口的base调用
    点云深度学习系列博客(四):PointNet代码精讲
    【TypeScript】深入学习TypeScript装饰器
    python KNN分类算法实战(使用鸢尾花数据集)
    Spring中事务失效的几种场景及解决办法
    kotlin 之几个常见的内联函数(一)
    独立站运营的核心——推广分享
    阿里云Linux系统MySQL8忘记密码修改密码
    实现第三方app开机自启
  • 原文地址:https://blog.csdn.net/weixin_74828161/article/details/133098589