跟我一起写Makefile(PDF重制版)
《跟我一起写Makefile(PDF重制版)》是一份深入浅出的指南,由陈皓于2019年2月12日撰写,旨在帮助读者理解和掌握Makefile的编写技巧。Makefile是Unix/Linux系统中用于自动化构建、编译和链接程序的重要工具。下面我们将详细探讨Makefile的核心知识点。 1. **程序的编译和链接**:在软件开发过程中,源代码通常需要经过编译和链接两个步骤才能生成可执行文件。编译将源代码转化为目标文件,链接则将多个目标文件合并为单一的可执行文件。Makefile可以自动化这些过程,提高开发效率。 2. **Makefile的规则**:规则定义了目标文件与依赖文件之间的关系以及更新目标文件所需的命令。规则的基本格式为:`target : dependency... command...`,其中`target`是需要生成或更新的文件,`dependency`是目标文件依赖的文件,`command`是执行的命令。 3. **示例**:一个简单的Makefile可能包含一个规则,如`hello : hello.c`,表示`hello`这个可执行文件依赖于`hello.c`源文件。命令部分`gcc -o hello hello.c`告诉make如何生成`hello`。 4. **make的工作原理**:make会检查目标文件和依赖文件的时间戳,如果依赖文件比目标文件新或者目标文件不存在,就会执行相应的命令。 5. **Makefile中的变量**:变量可以用来存储重复使用的字符串,例如`CC=gcc`定义了编译器变量,`CFLAGS=-Wall`定义了编译选项。 6. **自动推导**:make可以自动推导某些类型的依赖关系,如C程序的`.c`文件到`.o`的目标文件。 7. **另类风格的Makefiles**:除了标准格式,还可以采用更简洁的GNUMakefile风格,比如使用隐含规则。 8. **清除目标文件的规则**:`clean`是一个常见的伪目标,用于清理生成的中间和目标文件,如`clean : ; rm -f *.o hello`。 9. **Makefile的内容**:通常包括规则、变量定义、函数调用等,用于指导make执行编译任务。 10. **Makefile的文件名**:默认情况下,make会查找名为`Makefile`或`makefile`的文件,但也可以指定其他名称。 11. **引用其他Makefile**:`include`指令可以引入其他Makefile,便于模块化管理。 12. **环境变量MAKEFILES**:该环境变量可以指定额外的Makefile路径,使make能读取更多的规则。 13. **书写规则**:规则定义了目标文件的生成逻辑,包括使用通配符处理多个文件、文件搜索路径、伪目标(如`clean`)以及多目标规则。 14. **命令书写**:命令可以被分隔符`|`分隔并行执行,也可以通过`@`符号控制是否显示命令本身。`$(shell command)`可以执行shell命令。 15. **命令执行**:make会以子shell的形式执行命令,错误检查可以通过`-`前缀忽略某些错误,`+`前缀确保即使有错误也会继续执行后续命令。 16. **定义命令包**:通过函数`define`和`endef`可以定义多行命令,提高可读性和复用性。 通过理解和掌握以上知识点,读者可以编写出高效的Makefile,实现项目的自动化构建,降低维护成本,提升开发效率。在实际应用中,还需要根据项目需求灵活运用这些概念,不断优化Makefile的设计。
剩余81页未读,继续阅读
- 粉丝: 16
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- dsfdfdfefdfgfhgj
- 基于统计学的时间序列预测(AR,ARM) -洗发水销售研究、每日女性出生研究、时间序列预测的基线预测、法国香槟的月销售额
- 2023年中国数字经济规模已攀升至53.9万亿元,引领数字化服务革命
- Winform DataGridView 控件分页控件,上/下一页,跳转(附下载链接)
- 聊天交友短视频直播手机APP应用下载落地页html源码
- 计算机网络习题及参考答案
- Windows环境下的VMware Workstation虚拟机软件安装指南
- 最全交通灯检测数据集下载
- VMware虚拟机中NAT网络配置与CentOS系统安装指南实现虚拟机访问外网
- 网络安全2.0等级保护,二三级基本要求对比
评论0