- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
驾驭makefile
驾驭Makefile
驾驭Makefile
李 云
Blog:
摘要
从事嵌入式系统开发,如果不能驾驭 Makefile,那很难做到游刃有余。make 程序通过读取
Makefile 来做相应的事。Makefile 中最为重要的两个概念,一个是目标 (target ),另一个则是依赖
(dependency )关系。目标是指我们想让make 干什么,而依赖关系则描述了如何实现我们想要干
的,即怎么做。驾驭Makefile 的终级目标就是我们能运用目标和依赖关系来对所需解决的问题进行
思考。
关键词
嵌入式 嵌入式系统 Makefile make
参考资料
《UML 类图中的依赖》
《UML 中的活动图》(待写)
《熟悉binutils 工具集》
《GNU make》
1 基础
从事嵌入式系统开发,如果不能驾驭 Makefile,那很难做到游刃有余。根据我的观察,不少工
程师在从事与嵌入式相关的开发工作时,上手还是相对容易的,这里的上手,是指能在别人已搭建
好的开发平台上开始做应用方面的开发工作。但是一旦碰到与编译相关的问题,就显得束手无策。
这些与编译相关的问题主要有两方面,一方面是编译器报告的源程序当中的语法错误,另一方面就
是与Makefile 相关的错误。为了更为高效的从事开发工作,以及做到在工作中对于处理与编译相关
的错误更加的自信,驾驭Makefile 是非常必要的。
Makefile 其实只是一个指示make 程序 (后面简称make 或有时称之为make 命令)如何为我
们工作的命令文件,我们说 Makefile 其实是在说 make,这一点要有很清晰的认识。而对于我们的
项目来说,Makefile 是指软件项目的编译环境。软件产品开发在编码阶段最常见的工作内容大致是:
1)开发人员根据概要设计进行编码。
2 )开发人员编译所设计的源代码以生成可执行文件。
3 )开发人员对软件产品进行测试来验证其功能的正确性。
上面的三个步骤是一个迭代过程,如果最终验证设计的正确性完全达到要求,那么就完成了编码阶
段的开发,如果没有那还得重复这三个步骤,直到达到设计要求为止。
在上面的几步中,与Makefile 关系最大的是第二步,那Makefile 的好坏对于项目开发有些什么
影响呢?设计得好的 Makefile,当我们重新编译时,只需编译那些上次编译成功后修改过的文件,
也就是说编译的是一个delta,而不是整个项目。反之,如果一个不好的Makefile 环境,可能对于每
一次的编译先要clean,然后再重新编译整个项目。两种情况的差异是显然的,后者将耗费开发人员
大量的时间用于编译,也就意味着低效率。对于小型项目,低效问题可能表现得并不明显,但对于
规模相对大的项目,那就非常的明显了。开发人员可能一天做个十次编译(甚至更少)就没有时间
用于编码和测试(调试)了。这就是为什么通常大型项目都会有一个专门维护Makefile 的一个小团
队,来支撑产品的开发。
█ 1
驾驭Makefile
学习 Makefile 最为重要的是掌握二个概念,一个是目标 (target ),另一个就是依赖
(dependency )。目标就是指要干什么,或说运行 make 后生成什么,而依赖是告诉 make 如何去
做以实现目标。在 Makefile 中,目标和依赖是通过规则 (rule)来表达的。我们最为熟悉的是采用
make 来进行软件产品的代码编译,但它可以被用来做很多很多的事情,后面我们会给出一些不是
用 make 来进行代码编译的例子。驾驭Makefile,最为重要的是要学会采用目标和依赖关系来思考
所需解决的问题。
1.1 准备环境
我们需要一台Linux 机器,或是在Windows 上安装Cgywin 来学习Makefile。如果你需要安装
Cygwin,为了节省篇幅,请参照 《熟悉binutils 工具集》的第2 章节以准备好你的环境。需要注意
的是,在安装Cygwin 时不要忘记了安装make、GCC 和binutils 工具集。为了验证make
您可能关注的文档
最近下载
- 钢结构吊装专项施工方案(技术方案).doc
- 中国成人念珠菌病诊断与治疗专家共识解读PPT课件.pptx VIP
- 05S804:矩形钢筋混凝土蓄水池.pdf VIP
- 01-泌尿系统疾病总论.ppt VIP
- 物理治疗学神经生理疗法Bobath技术.docx VIP
- Unit 3 My favourite food Lesson 2 Happy birthday, Amber! 单元教学设计 粤教沪外教版英语三年级下册.docx
- Andrews分析法诊断正畸.pptx
- (新课程中小学科学教学设计与案例分析提纲及答案2.doc VIP
- 2025年湖北省遴选面试真题及答案大全解析.docx VIP
- DB11T 1832.15-2022 建筑工程施工工艺规程 第15部分:通风与空调安装工程 conv.docx VIP
原创力文档


文档评论(0)