make makefile

make是一个命令

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

makefile

mytest.exe:code.c
  2     gcc -o mytest.exe code.c
  3 .PHONY:clean
  4 clean:
  5     rm -f mytest.exe      

使用:

生成可执行文件

在这里插入图片描述

清理

在这里插入图片描述

作用

当有多个源文件时,使用make和makefile来帮助我们进行自动化编译,也就是用一个make和make c lean帮助程序员从繁琐的gcc或者g++的命令中解脱

依赖关系

举个例子:你给你爸爸打电话要钱,你是你爸爸的儿子,你依赖于你爸爸,这就是类似的依赖关系

依赖方法

你找你爸爸的目的是啥? 要钱
则mytest.exe依赖code.c生成,要gcc生成对应的可执行程序
在这里插入图片描述

make会自动推导makefile中的依赖关系栈式结构

故意再makefile文件中将gcc 生成i s o 文件过程都写出来
在这里插入图片描述

要形成mecode就需要mycode.o
要形成.o文件需要.s
要形成.s文件需要.i
要形成.i文件需要.c
我们目录里只有.c,那么这种向下递归寻找到.c,.c就是递归出口,再返回到上面生成中间文件
所以makefile中最终要生成的mycode会根据它所依赖的文件依次的去后面寻找后面的内容

在这里插入图片描述

即使是makefile顺序乱序也可以,不影响
在这里插入图片描述
在这里插入图片描述
实际开发不需要这么复杂。

为什么清理的时候要make 加上clean?

clean不依赖于任何
他的依赖方法就是清理 rm

如果把clean放到makefile的最开头,那么 make 会自顶向下对makefile进行扫描,把所要形成的第一个目标文件,充当为make的默认动作,谁在前面,直接make就是默认动作

make后面可以直接跟要生成的可执行文件,指定名称的依赖关系和依赖方法

make clean or make mycode

为什么make了一次之后就不能继续make了?怎么做到的?

现象
在这里插入图片描述

结论

一般比较文件的modify时间看是否新于可执行文件的modify时间,判断是否make生成
在这里插入图片描述
make会根据源文件和目标文件的新旧,判定是否需要重新执行依赖关系进行编译!
不一定总是执行的!

我要想让依赖关系总是被执行呢??
.PHONY:伪目标
在这里插入图片描述
但是不建议让生成可执行文件总是被执行

建议把clean加上总是被执行
clean不一定只做删除rm操作,可能会做其他清理操作,其他的操作不一定总是执行
在这里插入图片描述

新指令 stat + 文件名

在这里插入图片描述

查看一个文件的access , modify , change的三个时间
access:最近一次 文件被访问的时间 (cat vim 增删改)频率最高但实验不这样
modify:最近修改文件内容的时间
change:最近修改文件属性的时间

如果修改了文件内容,文件属性也需要更改(文件大小),而打开此文件,access也修改

但实际上access在理论上修改频率应该是最高的
但是文件存在磁盘上,多次访问必定造成效率下降
则access更新策略改为 ,计数器,访问5次会更改,或者modify几次和change几次会更改

touch + 文件名

touch一个存在的文件 ,强制更新文件的三个ACM时间

touch -m  //改modify
touch -a  //改access

在这里插入图片描述

回顾文件

文件属性 去 Linux-权限回顾

在这里插入图片描述

小细节

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值