跟我一起写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币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 城市起重机市场分析:预计2030年全球市场销售额将达到19.84亿美元.pdf
- 储能PCS市场分析:预计2030年全球市场销售额将达到115.8亿美元.pdf
- 串口服务器行业分析:预计2029年全球市场销售额将达到28亿元.pdf
- 低密度造影剂行业分析:预计2030年全球市场销售额将达到8.36亿美元.pdf
- 电动汽车保险市场分析:预计2030年全球市场销售额将达到162.5亿美元.pdf
- 电动EGR阀行业分析:预计2030年全球市场销售额将达到15.95亿美元.pdf
- 电流传感器市场研究:欧洲是全球最大的市场,占有约28%的份额.pdf
- 电推剪市场分析:预计2030年全球市场销售额将达到12.59亿美元.pdf
- 电子批记录(EBR)软件市场研究:预计2030年全球市场销售额将达到11.72亿美元.pdf
- 电子级二氧化硫(SO2)市场研究:预计2030年全球市场销售额将达到0.3亿美元.pdf
- 对位芳纶纤维市场研究:美国是最大消费国,占约41%的市场份额.pdf
- 非离子型碘造影剂市场研究:预计2030年全球市场销售额将达到54.66亿美元.pdf
- 肥料添加剂市场研究:预计2030年全球市场销售额将达到43亿美元.pdf
- 供应商关系管理系统市场研究:预计2030年全球市场销售额将达到183.5亿美元.pdf
- 工业视觉成像相机市场调研:欧洲是全球最大的市场.pdf
- 光电芯片测试仪市场研究:北美、欧洲、中国和日本是全球的主要地区.pdf
评论0