05-Linux编程基础03(Makefile编写).pptVIP

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux编程基础 Makefile的编写 GNU make 为什么要写makefile GNU make介绍 Makefile总述 Makefile中的规则 Makefile中命令的编写 Makefile中的变量 Makefile的条件执行 Makefile的内嵌函数 Makefile的约定 为什么需要Makefile 多文件项目的好处 省却了重新编译的时间 便于查找代码 便于链接,减少文件的尺寸 容易查找bug 多文件项目的编译问题 各个文件之间的复杂的关系 复杂的命令行操作 文件之间的依赖关系给编译带来的问题 makefile极大的提高了多文件项目的效率 可以完成自动化编译 对文件何时需要编译的控制 GNU make的介绍 GNU make简介 GNU make 是Unix系统下的一个工具,设计之初是为了维护C程序不必要的重新编译,它是一个自动生成和维护目标工具。 make最基本的功能就是通过makefile文件来描述源文件之间的关系并自动维护编译,告知系统以何种方式编译和链接程序。只要输入make命令,就可以自动完成所有编译工作 工作流程: 查找当前目录下的makefile文件 初始化文件中的变量 分析makefile中的所有规则 为所有目标文件创建依赖关系 根据依赖关系,决定哪些目标文件需要重新生成 执行命令 Makefile总述 make的运行 默认文件读取 make会在工作目录下按照顺序寻找makefile文件读取并执行,查找的文件名顺序为:“GNUmakefile”、“makefile”、“Makefile”,推荐使用“Makefile”做为文件名 可以通过“-f”或者“--file”选项来指定其他文件名。 命令格式为: -f NAME 或 —file=NAME 多个“-f”或者“--file”选项来指定多个需要读取的makefile文件,多个makefile文件将会被按照指定的顺序进行链接并被make解析执行。 当通过“-f”或者“--file”指定make读取makefile的文件时,make就不再自动查找这三个标准命名的makefile文件。 Makefile总述 Makefile的组成 显式规则 描述了在何种情况下如何更新一个或者多个目标文件。 隐含规则 make根据一类目标文件(典型的是根据文件名的后缀)而自动推导出来的规则。 变量定义 使用一个字符或字符串代表一段文本串, 指示符 指明在make程序读取makefile文件过程中所要执行的一个动作 注释 Makefile中“#”字符后的内容被作为是注释内容处理。注释行的结尾如果存在反斜线(\),那么下一行也被作为注释行。 Makefile总述 调用其他Makefile文件 include指示符 告诉make暂停读取当前的Makefile,而转去读取“include”指定的一个或多个文件,完成以后再继续当前Makefile的读取 指示符“include”书写在独立的一行,其形式如下 include FILENAMES... FILENAMES是shell所支持的文件名(可以使用通配符)。 指示符“include”所在的行可以一个或者多个空格开始,切忌不能以[Tab]字符开始 “include”和文件名之间、多个文件之间使用空格或者[Tab]键隔开 “-include”来代替“include”,可以忽略由于包含文件不存在或者无法创建时的错误提示 Makefile总述 解析makefile文件的过程 读取工作目录下的makefile文件 依次读取makefile文件中包含的文件(如果有) 初始化变量值并展开那些需要立即展开的变量和函数并根据预设条件确定执行分支 根据“终极目标”以及其他目标的依赖关系建立依赖关系链表 执行除“终极目标”以外的所有的目标的规则(规则中如果依赖文件中任一个文件的时间戳比目标文件新,则使用规则所定义的命令重建目标文件) 执行“终极目标”所在的规则 Makefile的规则 规则语法 TARGET... : PREREQUISITES... TABCOMMAND target:规则的目标,空格分开的多个文件名,也可以是一个标签 prerequisites:规则的依赖。生成规则目标所需要的文件名列表。 command:规则的命令行,是规则所要执行的动作。 另一种描述:TARGET : PREREQUISITES;COMMAND 命令行必须以tab键开头 一个较长行使用反斜线(\)来分解为多行,反斜线之后不能有空格 Makefile的规则 依赖规则 常规依赖 默认的情况下,make执行的是Makefile中的第一个规则,此规则的第一个目标称之为“最终目的”或者“终极目标” 执行“最终目标”定义的命令之前,先检查它所依赖的文

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档