Linux项目自动化构建工具-make/Makefile

一、什么是make和makefile

make是一条指令

Makefile是当前目录下的一个文件

二、makefile文件编写

依赖关系::前为要目标文件,后为其依赖的文件

依赖方法:用依赖文件生成目标文件的具体指令

简便写法:

$@:表示目标文件

$^:表示依赖文件

三、如何形成目标文件?

先将编译链接拆开成4个依赖

make后生成对应的.i .s .o的临时文件/中间文件

编译生成与写的顺序无关,扫描makefile文件时,会根据依赖关系先找到所需要的依赖文件,找到后返回原处继续执行。

make会自动推导 makefile中的所需的依赖文件

递归进行,栈式结构。

四、如何清理文件?

make后面不指定,默认执行第一条依赖关系和依赖方法

make clean指定了生成clean的依赖关系,就会执行相应的rm的依赖方法

用.PHONY修饰clean,使得总是可以clean

五、怎么判断make为最新版本?

源文件没有更新,make就没必要再一次编译。代码量较大时,比较耗时,这样可以提高编译效率

实现原理是什么? .c  .exe的更新时间不同

如何证明?

stat指令,查看3个时间(ACM时间)

文件 = 文件内容 + 文件属性

Modify:修改文件内容

Change:修改文件属性

Modify时,一般也会伴随Change和Access(具体情况具体分析)

修改内容,3个时间都改变。有时

chmod改变属性,只改变Change。为什么不改变Access?

Access访问就会修改,访问过于频繁。文件存在磁盘上,访问外设,频繁访问影响速度。

现在有的OS引入计数器,即多次access才会改变一次对应的时间

可以用touch指令手动更新时间

touch-->不存在就创建,存在就更新时间

.c .exe对比的是Modify时间。

如果此时不能make,touch一下更新时间就可以make。

用.PHONY修饰即可跳过时间对比,总是被执行。

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值