【Linux基础七】Linux开发工具—下(make和makefile)

1.make和makefile的意义

当我们编译代码时,会输入

gcc test.c -o test.exe

当我们删除可执行程序时,会输入

rm -rf test.exe

每次都要输入非常不方便,因此我们要使用make和makefile自动化构建代码,提高Linux下的编程效率

2.make和makefile的使用

make是指令
makefile是文件,而且需要我们自己创建,文件内部具有特定格式

创建makefile文件,vim开始编辑,如下是比较标准且基础的格式(test.c编译为mybin 和 清理mybin两个过程)

  • 第二行必须以tab键开头(与几个空格无关)

在这里插入图片描述
底行模式下wq退出后,makefile已经创建结束,准备一个任意代码的test.c文件放在同一目录下
在这里插入图片描述
使用指令:

make

请添加图片描述
成功得到mybin程序后,清理掉mybin,使用指令:

make clean

请添加图片描述

3.make和makefile深入理解

3.1 make指令

在这里插入图片描述

我们使用上述的make时,其实相当于make mybin
因为首次使用make时,会从上到下扫描makefile文件,如果发现了第一个目标文件就会自动执行
所以makefile的第一条指令可以自动执行,后面的指令就需要make + 特定指令

将编译指令和清理指令交换位置
在这里插入图片描述
执行make,再执行make mybin,可以看到结果
在这里插入图片描述

3.2 伪目标

在这里插入图片描述

.PHONY将clean指令修饰成了伪目标

是否是伪目标有什么区别呢?

当我们正常使用make会运行文件内的第一条指令,但连续make的行为被阻止

在这里插入图片描述

但被装修成伪目标的clean就可以每次都执行

在这里插入图片描述

我们发现make会对指令有限制,并不能随意编译代码,为很么会被限制?这就要引出文件的三个属性了

4.文件的三个属性

查看文件属性

stat 文件名

请添加图片描述

  1. 修改文件内容可能会影响文件大小,进而影响文件属性
  2. 修改文件权限等操作影响文件属性,不会影响文件内容
  3. Access是最频繁更新的时间,所以它的时间数据不会实时更新

当源文件test.c的修改时间晚于可执行程序mybin的修改时间,系统才会同意make
所以伪目标就能强制执行指令

5.makefile的推导能力

请添加图片描述

这就是推导能力

6.makefile定义变量

按照如下写法,运行起来与普通的makefile没有区别
第一种:

target=mybin    
src=test.c                                                                                                                                                       
cc=gcc 

$(target):$(src) 
    $(cc) $(src) -o $(target)
.PHONY:clean 
clean: 
    rm -rf $(target)

$(定义的变量名) 即可使用自定义的名字

第二种:
请添加图片描述

依赖关系左边可用$^代替
依赖关系右边可用$@代替

mybin:test.c
     gcc $@ -o $^
.PHONY:clean  
clean: 
     rm -rf mybin

补充:

如果不想makemake clean时将指令打印在显示器上,可以在makefile里,在指令前加上@

mybin:test.c
     @gcc $@ -o $^
.PHONY:clean  
clean: 
     @rm -rf mybin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值