【Linux】make及mkfile文件配置教程

在这里插入图片描述

1.make/mkfile的简单介绍

自动化构建程序
make是一个命令,
在这里插入图片描述
makefile是一个文件——依赖关系依赖方法
依赖关系:我为什么要帮你?Why?
依赖方法:我怎么帮你?How?

2. 如何使用?

目标文件:依赖文件列表
(tab键) 依赖关系

首先写一个简单的程序简单的程序

3. 写入

  • 创建makefile文件,进行写入;
  • 项目的自动化构建 编译文件
    在这里插入图片描述
mybin:mytest.cpp
	g++ -o mybin mytest.cpp
  • 项目自动化清理 清理文件 -不需要依赖文件
mybin:mytest.cpp
	g++ -o mybin mytest.cpp
clean:
	rm -f mybin

在这里插入图片描述

  1. make和makefile形成目标文件时,默认从上往下扫描makefile文件,执行第一个执行方法(默认形成第一个文件)。
  2. 默认只执行一个。

我们思考一个问题:make、makefile怎么会知道mybin是最新的呢?
在这里插入图片描述
make依靠时间对比是否重新编译,只要可执行程序比所有源文件最近的时间(ACM)都新,就说明是新的。

4.ACM时间

stat +文件名

Access:访问时间(cat…累积到一定时间后更新,不是实时更新,保证不对系统造成太大负担);
Modify:对文件内容做修改;make对照的是Modify
Change:对文件属性(ll查看)做修改;
对内容做修改,Modify时间,其Change时间属性时间也发生改变;(文件包括内容和属性,二者对立统一😉)
stat

注:更新时间 touch +文件名对Modify时间刷新;
在这里插入图片描述

5. 补充

.PHONY:可修饰mybin目标文件,让它成为一个伪目标(总是会执行当前目标)
.PHONY
由于编译的文件每次都需要被清理,所以一般将clean修饰;

$@:目标文件
$^:依赖文件列表

  • 定义变量(替换)
    在这里插入图片描述

6. 实际实现过程

结合编译流程,我们可写出链接时的实际实现过程为:

mybin:mytest.o    
    g++ -o mybin mytest.o    
mytest.o:mytest.s    
    g++ -c -o mytest.o mytest.s    
mytest.s:mytest.i    
    g++ -S -o mytest.s mytest.i    
mytest.i:mytest.cpp    
    g++ -E -o mytest.i mytest.cpp    
    
.PHONY:clean    
clean:    
    rm -f mybin mytest.s mytest.i mytest.o    

在这里插入图片描述

可以更好立即编译原理,但在实际中不会像如上编写,直接生成.o文件。

7. 小技巧

在编写文件前先写通makefile文件,防止将源文件和makefile弄反覆盖源代码。
如下步骤:

在这里插入图片描述
🌹 点赞收藏加关注🌹
🌹 关注不迷路🌹

没有💦的地方叫沙漠
没有👦的地方叫寂寞
💝👦就冲🙏 ,别等错过了😿
在被子里偷偷听💽反方向的🕚

在这里插入图片描述

👀👀
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值