<Linux复习>make/Makefile

一、本章重点

1、复习Linux项目自动化构建工具make/Makefile

2、stat命令

3、写一个进度条

01 make/Makefile

首先需要了解的是:make是个命令,Makefile是个文件

直接上怎么使用

 Makefile文件里写的都是依赖关系和依赖方法

依赖关系:mytest:test.c、clean:空

依赖方法:gcc test.c 0o mytest、rm -f mytest

clean这个目标文件被.PHONY修饰了,我们一般称被.PHONY修饰的目标文件为伪目标。

作用:让clean的依赖方法总是被执行。

具体什么是总是被执行,我们先来了解什么是可能不被执行。

 当mytest为最新的目标文件就不再执行对应的依赖方法了。

这里可以继续深入了解一下如何判断mytest是最新的可执行程序呢?

先介绍一下"ACM时间"

Access:代表的是最新访问时间

Modify:代表文件内容的最新改变时间

Change:代表文件属性的最新改变时间

 当我们修改test.c的属性数据时,只有Change值发生了变化。

现在我们可以解释的是,如果可执行程序比源文件的内容Modify时间晚,说明源文件就是最新的,就不需要重新生成可执行了,因此就不再执行依赖方法了。

如果给mytest加上.PYHONY(类是于关键字),那么mytest对应的依赖方法总是被执行的,说明白点就是不管最不最新,都执行mytest的依赖方法。

 

但我们一般不用.PHONY修饰可执行程序,因为这样可能会有效率的损失。 

需要知道的是:一般使用make命令都是 make + 目标文件/伪目标 ,但第一行的目标文件可以省略,也就是可以直接make,而不用make mytest(可以用)。

还有一个值得提问的问题:为啥.PHONY要修饰clean呢?

clean不被.PHONY修饰不是也能总是被执行吗?

这里我把.PHONY给去掉了,然后在试试

 不给clean添加.PHONY视乎也能总是被执行,但下面这总情况就不能总是执行了。

 如果当前目录下有clean文件,那么make clean就不能总是被执行了

因为clean没有依赖,按说每次都会执行,但是由于当前文件夹存在clean文件,要拿clean文件和目标相比哪个更新,但是由于没有目标,make始终认为clean文件是最新的,因而不会执行相应的rm命令。

02 stat

功能:显示文件详细信息,可显示三种时间。

Access:代表的是最新访问时间

Modify:代表文件内容的最新改变时间

Change:代表文件属性的最新改变时间

Access有点特殊

 按理说,访问了test.c文件,那么Access时间也会改变,但上面的Access并没有改变,这是因为我们访问test.c的操作可能是最频繁的,如果不断的修改Access时间,就得不断的进行io操作,这样会降低效率,因此在最新的Linux内核只会当访问test.c足够多的次数之后,才会去修改Access时间。

03 进度条小程序

如果要严格区分换行和回车

换行:

 回车:

 严格来说\n是指回车+换行,但现在一般都叫它换行,\r叫做回车。

1、需要美观的话,可使用printf进行颜色输出。

2、 同时关于使用fflush刷新缓冲区的问题,会在后面详细解答。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李逢溪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值