【Linux】 深入讲解自动化构建工具

avatar
作者
猴君
阅读量:0
各位大佬好 ,这里是阿川的博客,祝您变得更强

在这里插入图片描述 个人主页在线OJ的阿川

大佬的支持和鼓励,将是我成长路上最大的动力在这里插入图片描述

阿川水平有限,如有错误,欢迎大佬指正在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Linux一系列的文章(质量分均在93分以上
Linux–发展、环境、指令上半场
Linux–指令下半场
Linux–权限
Linux–生态与工具
Linux–开发工具

众所周知

自动化构建工具是指

  • make指令
    • 能够自动化编译和自动化清除文件

请添加图片描述

  • makefile文件
    • 文件中存在依赖关系依赖方法

请添加图片描述

Makefile第一性原则

所以单个make指令表示编译吗

不一定,在make中它会默认 makefile文件中的第1个依赖关系具体实现

请添加图片描述

简写操作

依赖方法的文件名很麻烦,可不可以简写呢?

输入

$ @ 表示简写依赖方法冒号的左边文件
$ ^ 表示简写依赖方法冒号的右边文件
$ 锁定为依赖方法的冒号,@表示左边, ^ 表示右边

请添加图片描述

隐藏展示依赖方法

每次使用自动化构建工具,都会展示具体的依赖方法,若我不想让它展示呢?

在依赖方法中加入@

请添加图片描述

深入了解

我们将深入一下,自动化构建工具是如何进行工作的?

makefile它有自己的一套依赖关系栈式结构
且在makefile中它会自动帮你保存所写内容

请添加图片描述

时间问题

make常常用于编译,那我可以一直make,一直重新编译吗?

不能的,make指令它会根据源文件和目标文件的新旧 ,判断是否需要重新执行依赖关系进行编译.

翻译成大白话

已经编译过的文件,之后编译器会自动识别是否编译过
若编译过了就不再编译了,因为可以节省效率,无需重新编译。

那编译器是如何做出判断的呢?

可执行程序和源文件时间
若可执行程序时间大于源文件时间,则无需重新编译
若可执行程序时间小于源文件时间,则需重新编译

深入一点

源文件和可执行程序新旧问题的判断,编译器会将源文件和可执行程序时间转换成时间戳根据大小来进行比较新旧

请添加图片描述

哦,就是时间呢?那很简单呀
不一定
时间分为:

  • Access访问的时间
  • Modify修改的时间
  • Change改变的时间

请添加图片描述

简称为ACMA(访问)C(改变)M(修改)
修改的时间改变的时间不是一样的吗?

不是哦,举个例子
文件等于文件内容(modify)文档属性(change)

请添加图片描述

之前说了Linux当中,一个重要的思想就是一切皆文件
所以
modify文件内容修改的时间
change文档属性修改的时间
文件内容修改一定会引起文档属性的改变,则时间也会引起改变
modif时间改变影响change时间改变change不一定影响modify改变
例如文档属性可能重命名一下,但不会文档内容改变

如何进行查看时间呢?

stat指令可以查看可执行文件和源文件的时间

请添加图片描述

深入一下

请添加图片描述

这里发现access访问的时间并没有发生变化,这不对
access访问时间应该是更改的是最频繁的,为什么反而没有变化呢?

正是因为
Access访问是最频繁的,要反复写入硬盘中
多个用户使用则效率太低了
如今版本中设置者修改了一下,现在需要根据modeify和change的频率来进行更改Access的记录时间或者要三四次access访问时间才能记录为一次有效的时间
这样做从而间接的提高了效率

不想进行优化,就想全部更新时间或者指定单独的时间进行更新,可以吗?

touch更新已有的文件

  • -mmodify单独进行更新

请添加图片描述

  • 若该文件未存在,则会新建文件 
  • 若已存在,则会将时间全部进行更新。 
  • 注意:当时间全部进行更新后即make可以重新进行编译. 

请添加图片描述

这样好麻烦呀,能不能找个一劳永逸的方法就让它重新自动化构建,而不是一直用touch进行更新时间?

可以的
makefile输入伪目标.PHONY

  • 告诉编辑器总是放它通行

请添加图片描述

但是不建议伪目标放入编译实现中,而常常将伪目标放入清理实现中
因为就算将伪目标放入编译中,编译器总是放它通行即重新编译
该重新编译在可执行程序上新增内容编译,这可能导致老的问题依旧还有
所以常常将伪目标放入清理实践中
因为清洗了数据之后再重新编译
完全先删除可执行程序再重新创建重新编译可以有效避免老的问题

好的,到此为止啦,祝您变得更强
在这里插入图片描述
想说的话

实不相瞒,写的每篇博客都要写五六个小时(加上自己学习和纸质笔记,共八九小时吧),很累希望大佬支持

在这里插入图片描述

道阻且长 行则将至

个人主页:在线OJ的阿川大佬的支持和鼓励,将是我成长路上最大的动力 在这里插入图片描述

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!