- 1
- 0
- 约7.85千字
- 约 37页
- 2017-05-06 发布于四川
- 举报
第7章节多模块软件的编译和链接
2-7特殊目标 上述问题用.PHONY的特殊目标解决 .PHONY:clean clean: rm –rf *.o 2-7特殊目标 特殊目标 目的 .DEFAULTS 如果make找不到生成目标的任何makefile入口或后缀规则,它就执行与目标相关的命令 .IGNORE 如果某一行makefile包含该目标,make忽略错误代码并继续建立,如果一个命令不正常存在, make自然会停止。带有-i选项的make命令可以执行相同的任务 .PHONY 允许您指定一个不是文件的目标,所以您能指示make调用一系列makefile中的命令,即使在您的当前目录中有一个具有目标名称的文件 .SILENT make执行这些命令但不显示这些命令,带有-s选项的make可以执行相同的任务。如7.2.5节所讨论的,在该命令前放置一个@符号就可以执行一个特别命令 .SUFFIXES 为目标指定的前提(后缀)可以与后缀规则相关联。如果与目标没有相关联的前提,已存在 的后缀列表就会被删除 2-8一般性语法错误 Tab键 $make Makefile:4:***missing separator.Stop $cat –t Makefile $cat -e Makefile 2-9命令行的使用和调试 使用非标准的Makefile名称 显示所执行的顺序 $ make –f prog1.makefile $make -n 本章总结 简介 多模块软件的编译和链接 Makefile和Make Rules 默认规则 虚目标 特殊目标 一般性语法错误及其纠正措施 多模块软件、依赖树和make Make实用程序 make实用程序对简单变量的支持 内建变量 命令行的使用和调试 多模块软件编译的困境 分析make的原理,make程序的用法,以及Makefile的语法,规则,以及makefile对变量的支持,描述了虚目标,以及makefile的语法错误检查方法 实验 任务1:为hello world 编写makefile 任务1 注意事项 提示1: 编写一个头文件,两个C文件 main.c 是主程序 hello.c编写打印”hello world”的函数 提示2: 编写makefile,建立直接的依赖关系 使用默认规则 定义变量CROSS_COMPILE := CC := (CROSS_COMPILE)gcc * Make:工程管理工具 Linux下的程序员如果不会用Make来构建和管理自己的工程,应该不算一个合格的程序员。 移植:修改Make的配置。 Shell缺点:只要有一个源代码或者头文件被修改了,就要重新创建所有的目标文件,而且大多数没必要这样做。 顺序:makefile Makefile make –d make –f testfile make –h make -s := :后面一定被定义或赋值,不然通不过。 x =abc x +=def x =abc def 多模块软件的编译和链接 第7章 预习检查 $make –f 文件,是什么文件? 遵循makefile语法的文件,也就是makefile文件 目标列表: 关联性列表,含义是什么? 目标列表依赖于关联性列表 简单变量的定义方式? 变量名 := 文本 举一个make内置变量的例 CFLAGS, $@,$?等 make clean,clean常见的含义是什么? clean是虚目标,删除make生成的文件 * 本章目标 了解Make实用程序的功能 使用makefile管理多模块软件 掌握makefile的规则,变量 掌握makefile的虚目标规则 本章结构 简介 多模块软件的编译和链接 Makefile和Make Rules 默认规则 虚目标 特殊目标 一般性语法错误及其纠正措施 多模块软件、依赖树和make Make实用程序 make实用程序对简单变量的支持 内建变量 命令行的使用和调试 1-1 多模块软件 实用的软件都是拥有多个源文件 这些源文件称之为模块 多模块软件 多模块软件 优点 缺点 较小的程序文件易于维护 知道所有文件的依赖性 只需编译经过修改的源文件,而不是编译整个系统 跟踪所有文件修改的时间戳 支持信息隐藏 必须键入很长的命令行 2-1make 一个差强人意的办法 使用shell脚本 上述的缺点,导致了make的产生。 $cat build.sc gcc –c prog1.c prog2.c prog3.c gcc –o prog prog1.o prog2.o prog3.o 2-1make Make的产生 Make 程序最初来源于steve Johnson的一个拜访,那天他风风火火的闯进我的办公室,诅咒命运之神让他浪费了一个
原创力文档

文档评论(0)