【Linux】 深入讲解自动化构建工具
创始人
2024-11-30 19:06:56
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的阿川大佬的支持和鼓励,将是我成长路上最大的动力 在这里插入图片描述

相关内容

热门资讯

一分钟了解!牛牛房卡制作链接神... 微信游戏中心:神牛大厅房卡在哪里买打开微信,添加客服微信【88355042】,进入游戏中心或相关小程...
一分钟了解!金花房卡怎么购买超... 超凡联盟是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:【3329006910】或QQ:332900...
ia攻略/牛牛房卡批发平台新蜜... ia攻略/牛牛房卡批发平台新蜜瓜大厅/随意玩/科技房卡多少钱一张Sa9Ix苹果iPhone 17手机...
玩家攻略,牛牛房卡官网星驰娱乐... 您好!微信星驰娱乐大厅链接获取房卡可以通过以下几种方式购买: 1.微信渠道:(星驰娱乐)大厅介绍:...
正版授权!牛牛房卡官网海蓝大厅... 今 日消息,海蓝大厅房卡添加微信33549083 苹果今日发布了 iOS 16.1 正式版更新,简单...
微信里面炸金花房卡充值方式/创... 金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:15984933许多玩家在游戏中会购买房卡来享受...
重大通报,金花房卡批发价新道游... 新道游/皇豪互娱房卡更多详情添加微:33549083、 2、在商城页面中选择房卡选项。 ...
头条推荐!牛牛房卡官网新大海/... 微信游戏中心:新大海房卡在哪里买打开微信,添加客服微信【88355042】,进入游戏中心或相关小程序...
正版授权!牛牛房卡游戏代理新九... 正版授权!牛牛房卡游戏代理新九天大厅/房卡怎么购买Sa9Ix苹果iPhone 17手机即将进入量产阶...
终于找到“牛牛房卡批发平台/随... 随意玩是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来享...
给大家讲解“微信里面炸金花房卡... 新圣游是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:15984933许多玩家在游戏中会购买房卡来享...
IA解析/牛牛房卡怎么获得卡贝... 卡贝大厅/新上游是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:【3329006910】或QQ:33...
一分钟了解!牛牛房卡出售老神兽... 今 日消息,老神兽/海贝大厅房卡添加微信33549083 苹果今日发布了 iOS 16.1 正式版更...
科技实测!金花房卡专卖店神盾大... 神盾大厅/新天道房卡更多详情添加微:33549083、 2、在商城页面中选择房卡选项。 ...
ia实测“金花房卡微信充值/新... 新超凡是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来享...
科技实测!牛牛房卡游戏平台加盟... 微信游戏中心:九哥联盟房卡在哪里买打开微信,添加客服微信【88355042】,进入游戏中心或相关小程...
科技实测!金花房卡代理零售飞鹰... 科技实测!金花房卡代理零售飞鹰互娱/房卡批发市场价格表Sa9Ix苹果iPhone 17手机即将进入量...
ia攻略/金花房间怎么创建番茄... 您好!微信番茄大厅大厅链接获取房卡可以通过以下几种方式购买: 1.微信渠道:(番茄大厅)大厅介绍:...
ia实测“微信牛牛房卡链接哪里... 随意玩是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡来享...
正规平台有哪些,牛牛房卡出售天... 正规平台有哪些,牛牛房卡出售天道联盟/随意玩/房卡哪家便宜天道联盟/随意玩是一款非常受欢迎的游戏,咨...