当前位置: 首页 > news >正文

Linux开发工具(3)

一、make和makefile

1.1背景

• 会不会写makefile,从一个侧面说明了一个⼈是否具备完成大型工程的能力 
• 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一
系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至
于进行更复杂的功能操作
• makefile带来的好处就是----“自动化编译”,一旦写好,只需要一个make命令,整个工程完全
自动编译,极大的提⾼了软件开发的效率。
• make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这
个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。
• make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建


1.2make/makefile的创建与使用:


1.2.1make和makefile的使用如下图:


1.2.2项目清理


• 工程是需要被清理的
• 像clean这种,没有被第一个目标文件直接或间接关联,那么它后面所定义的命令将不会被⾃动
执行,不过,我们可以显示要make执行。即命令⸺⸺“make clean”,以此来清除所有的目标
文件,以便重编译。
• 但是一般我们这种clean的目标文件,我们将它设置为伪目标, 用.PHONY 修饰, 伪目标的特性
是,总是被执行的。
• 可以将我们的 hello 目标文件声明成伪目标,测试一下

连续的make我们发现不会重复编译,如何判断是否需要重新编译呢?


通过比较可执行程序的修改时间和源文件最近一次的修改时间就可以知道是否需要重新编译
如果可执行程序的修改时间比源文件最近一次的修改时间新,那么就不需要修改;
如果可执行程序的修改时间比源文件最近一次的修改时间旧,那么就需要修改;
make判断的是stat查看到文件的时间下的modify时间来判断是否执行的

1.3stat查看时间指令

1.3.1查看方式

查看文件的相关时间:stat指令 + 文件名

1.3.2查看到的三种时间

文件 = 内容 + 属性
(1)Modify: 内容变更,时间更新
(2)Change:属性变更,时间更新
(3)Access:常指的是文件最近一次被访问的时间。在Linux的早期版本中,每当文件被访问时,其atime都会更新。但这种机制会导致大量的IO操作。

1.4伪目标(.PHONY)

1.4.1伪目标的引入

make会根据源文件个目标文件的新旧,来判断是否需要重新执行依赖关系进行编译,也就是说make不一定总是能被执行,那么这个时候我们就可以在makefile文件头部加上 .PHONY:(要总是被执行的文件名),就可以保证一直执行了

1.4.2伪目标的作用

 .PHONY:让make忽略源文件和可执行目标文件的Modify时间对比

注意:为了让我们每次执行的后形成的可执行文件是最新的,所以我们要在clean前面带上伪目标.PHONY

1.5扩展

在makefile中,gcc不用在八文件名字写全了,可以使用$@和$^
mytest:test.c
gcc -o $@ $^
$@:代表目标名。 $ ^ : 代表依赖文件列表


1.6总结


(1)makefile中的注释使用#
(2)make会自动推到makefile中的依赖关系,且推到的过程是一种栈式的结构
(3)make会根据源文件个目标文件的新旧,来判断是否需要重新执行依赖关系进行编译,也就是说make不一定总是能被执行
(4)如果不想在make执行的时候显示细节,可以在依赖方法前面加上@符号即可

 

http://www.dtcms.com/a/562619.html

相关文章:

  • 能在线做实验的网站福田网站建设制作
  • 国际婚恋网站排名wordpress 菜单添加图标
  • 一般网站的后台怎么做的网站调研表
  • 一级域名做网站的好处rails网站开发
  • 自己怎样注册企业网站集团公司网站源码
  • 使用 CloudWatch Logs Insights 分析 Amazon Bedrock 调用延迟
  • 快捷的网站建设软件六盘水做网站
  • 网站开发资金尚层别墅装饰公司官网
  • 网站源码生成知名的中小企业有哪些
  • PCB设计<囫囵吞枣学习法>: 22_PCB设计之设计规则检查
  • 重庆工程建设招标网官方网站广州货运网站建设
  • 银川建企业模板网站网页制作企业网站作业
  • 网站建设有哪些困难房卡app游戏开发
  • 网站建设策划完整方案电商设计培训学校
  • 黄石建设信息网站电商网站建设计入什么科目
  • 多个织梦dedecms网站怎么做站群青海响应式网站建设
  • js做示爱网站例子排名第一的玉米品种
  • 电子商务网站建设需要注意什么外贸企业网站系统源码
  • 复盘与导出工具最新版V34.0版本更新----修复精选个股,今日龙一,风向标,实时盯盘 涨停股竞价 昨日涨停 板块轮动 题材库 失效问题
  • 广州网站建设哪家好个人如何注册公司流程
  • 大作设计网站官网入口做擦边球网站
  • 酵母表面展示技术:蛋白工程的“高通量筛选利器”
  • 让老MP3焕发新生!Rockbox开源固件
  • 门户网站构建国家备案网
  • sourceforge下载提速的方法
  • 网站开发需求分析word微信官网下载安装微信
  • 电影资源分享网站怎么做的网站设计注意因素
  • 郑州建站推广公司优质的广州做网站
  • wordpress 建立网站学生个人网站建设方案书框架栏目
  • 打工人日报#20251102