理解与编写Makefile:陈皓详解
"跟我一起写Makefile-陈皓.pdf" 是一本关于Makefile的入门学习资料,由陈皓撰写,祝冬华整理。该文档详细介绍了Makefile的基本概念、编写规则以及高级技巧,适合嵌入式开发人员进行学习。 在Makefile的学习中,首先需要了解的是Makefile的作用和基本结构。Makefile是用于自动化编译和链接过程的脚本,它能帮助开发者高效管理项目构建。文档中提到了Makefile的两个主要部分:显式规则和隐晦规则。显式规则明确指定了目标文件如何从源文件生成,而隐晦规则则是预定义的一些通用规则,如默认的编译和链接行为。 Makefile的规则包含目标、依赖和命令三部分。例如,一个简单的规则可能如下所示: ``` target: dependency command ``` 这里的`target`是需要生成的目标文件,`dependency`是目标文件依赖的源文件,`command`是当依赖文件更新后执行的命令。 make工具通过检查目标文件与依赖文件的修改时间来决定是否需要重新编译。makefile中还使用了变量,使得规则和命令可以复用,减少重复代码。比如,可以定义一个变量`CC`为编译器,然后在规则中使用`$(CC)`。 makefile中的自动推导功能可以让make自动识别源文件和目标文件之间的关系,简化规则编写。同时,还有伪目标(如`.PHONY`)用于标记那些实际上并不存在的或者不应被make误认为是文件的目标。 在编写命令时,可以通过在命令前加上`@`来隐藏命令的执行信息,或者使用`;`分隔多条命令。make还支持命令包(shell函数),允许将多条命令封装在一个函数中。 变量的使用是Makefile中的关键。变量可以存储规则、命令、路径等信息,有基础赋值、追加赋值等多种赋值方式。文档中还提到了`override`指示符,用于覆盖Makefile外部设置的变量,以及多行变量的定义方法。 Makefile中还可以进行条件判断,这在处理不同平台或配置时非常有用。条件判断的语法类似于编程语言中的条件语句。 最后,Makefile提供了多种函数,用于字符串处理、列表操作等,例如`subst`用于替换字符串中的子串,`patsubst`用于模式匹配替换,`filter`和`filter-out`用于筛选列表中的元素,`sort`对列表排序,`word`、`wordlist`、`words`则用于提取列表中的特定元素。 这份文档全面讲解了Makefile的各个方面,是初学者掌握Makefile的宝贵资源。通过学习,读者能够编写出高效、灵活的Makefile,提高软件项目的构建效率。
![](https://csdnimg.cn/release/download_crawler_static/20018761/bgd.jpg)
![](https://csdnimg.cn/release/download_crawler_static/20018761/bge.jpg)
![](https://csdnimg.cn/release/download_crawler_static/20018761/bgf.jpg)
![](https://csdnimg.cn/release/download_crawler_static/20018761/bg10.jpg)
剩余77页未读,继续阅读
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/cf0de6bfb9594d49b89feaa7422427fd_kangkanglhb88008.jpg!1)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/user-vip.1c89f3c5.png)
- 粉丝: 2w+
- 资源: 23
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 多模态联合稀疏表示在视频目标跟踪中的应用
- Kubernetes资源管控与Gardener开源软件实践解析
- MPI集群监控与负载平衡策略
- 自动化PHP安全漏洞检测:静态代码分析与数据流方法
- 青苔数据CEO程永:技术生态与阿里云开放创新
- 制造业转型: HyperX引领企业上云策略
- 赵维五分享:航空工业电子采购上云实战与运维策略
- 单片机控制的LED点阵显示屏设计及其实现
- 驻云科技李俊涛:AI驱动的云上服务新趋势与挑战
- 6LoWPAN物联网边界路由器:设计与实现
- 猩便利工程师仲小玉:Terraform云资源管理最佳实践与团队协作
- 类差分度改进的互信息特征选择提升文本分类性能
- VERITAS与阿里云合作的混合云转型与数据保护方案
- 云制造中的生产线仿真模型设计与虚拟化研究
- 汪洋在PostgresChina2018分享:高可用 PostgreSQL 工具与架构设计
- 2018 PostgresChina大会:阿里云时空引擎Ganos在PostgreSQL中的创新应用与多模型存储
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)