- 1、本文档共52页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第二课的-gcc、gdb、makefile、svn
四、Makefile – 开始之前 从上例中看Makefile的一个基本规则: target ... : prerequisites ... command ... target也就是一个目标文件,可以是Object File,也可以是执行 文件。还可以是一个标签(Label) prerequisites就是,要生成那个target所需要的文件或是目标。 command也就是make需要执行的命令。(任意的Shell命令) 这是一个文件的依赖关系,也就是说,target 这一个或多个的目 标文件依赖于prerequisites中的文件,其生成规则定义在 command中。说白一点就是说,prerequisites中如果有一个以 上的文件比target文件要新的话,command所定义的命令就会被 执行。 如salloc依赖于salloc.o,要生成salloc需要执行gcc salloc.o -o salloc 这就是Makefile的规则。也就是Makefile中最核心的内容。 四、Makefile – 工作原理 3)工作原理 (1)、make会在当前目录下找名字叫“Makefile”或“makefile”的文件。 (2)、如果找到,它会找文件中最终的目标(target),在此例中,它的最终目标是all指示的各个执行文件。 (3)、拿salloc来说,如果salloc文件不存在,或是salloc所依赖的后面的 .o 文件的文件修改时间要比salloc这个文件新,那么,他就会执行后面所定义的命令来生成salloc这个文件。 (4)、如果salloc所依赖的.o文件也存在,那么make会在当前文件中找目标为.o文件的依赖性,如果找到则再根据上面的规则决定是否重新生成.o文件。(这有点像一个堆栈的过程) (5)、当然,你的c文件和h文件必需是存在的,于是make会生成 .o 文件,然后再用 .o 文件生成salloc 四、Makefile – 工作原理 3)工作原理 (1)、make会在当前目录下找名字叫“Makefile”或“makefile”的文件。 (2)、如果找到,它会找文件中最终的目标(target),在此例中,它的最终目标是all指示的各个执行文件。 (3)、拿salloc来说,如果salloc文件不存在,或是salloc所依赖的后面的 .o 文件的文件修改时间要比salloc这个文件新,那么,他就会执行后面所定义的命令来生成salloc这个文件。 (4)、如果salloc所依赖的.o文件也存在,那么make会在当前文件中找目标为.o文件的依赖性,如果找到则再根据上面的规则决定是否重新生成.o文件。(这有点像一个堆栈的过程) (5)、当然,你的c文件和h文件必需是存在的,于是make会生成 .o 文件,然后再用 .o 文件生成salloc (6)像clean这种,没有被第一个目标文件直接或间接关联,那么它后面所定义的命令将不会被自动执行,不过,我们可以显式的要求make执行。也就是命令“make clean”,以此来清除所有的目标文件,以便重编译。 四、Makefile – 变量定义 3)变量定义 假设我们有个程序执行程序edit,它依赖于多个.o文件,如下: edit : main.o kbd.o command.o display.o \ insert.o search.o files.o utils.o gcc -o edit main.o kbd.o command.o display.o \ insert.o search.o files.o utils.o 我们要在两处输入这些文件,这里我们可以这样做: 声明一个变量,叫objects, OBJECTS, objs, OBJS, obj, 或是 OBJ,我们在makefile一开始就这样定义: objects = main.o kbd.o command.o display.o \ insert.o search.o files.o utils.o 于是,我们就可以很方便地在我们的makefile中以“$(objects)”的方式来使用这个变量,makefile就变成下面这个样子: objects = main.o kbd.o command.o display.o \ insert.o search.o files.o utils.o edit : $(objects) gcc -o edit $(objects) 四、Makefile – 自动推导 4)自动推导 make很强大,它可以自动推导文件以及文件依赖关
您可能关注的文档
最近下载
- 政府会计准则试题.pdf VIP
- 2025年江西省中考语文模拟卷(二)(含答案) .pdf VIP
- 综合与实践 低碳生活(课件)2024-2025学年度人教版数学七年级下册.pptx VIP
- 关于护理垂直管理体系的工作方案.docx VIP
- 实训3数据备份的概念,掌握使用Windows Server Backup备份和恢复数据.docx VIP
- 社区网格化管理工作小结.doc VIP
- 水利水电工程安全监测单元工程施工质量验收评定标准.pdf VIP
- 东方黄粱梦(原曲:仙剑赋)钢琴谱钢琴简谱 数字谱 钢琴双手简谱.pdf VIP
- 《肾上腺皮质功能监测》课件.ppt VIP
- 注册安全工程师知识点总结(法律法规).docx
文档评论(0)