



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
信息来源:首先介绍make实用程序的语法和常用选项,然后细剖makefile文件的组成。make命令make 选项 目标 宏定义通过命令行参数中的target,可指定make要编译的目标,并且允许同时定义编译多个目标,操作时按照从左向右的顺序依次编译target选项中指定的目标文件。如果命令行中没有指定目标,则系统默认target指向描述文件中第一个目标文件。-d 显示调试信息-n 不运行任何makefile文件,只打印需要执行的命令-p 输出所有宏定义和目标文件描述-s 静止状态下运行,不显示任何命令行信息-f file 通知make程序从file中读取内部依赖说明,缺省情况下会读取makefile或者Makefile文件处理,文件名-表示读取标准输入,在Linux中,GNU make工具在当前工作目录中按照GNUmakefile、makefile、Makefile的顺序搜索makefile文件注意:在源文件没有被修改的情况下,运行make命令会生成一条消息,说源文件的可执行文件是最新的,不需要用make命令重新编译和链接。要强制再创建可执行代码,需要改变源文件的上次更新时间,可以使用touch命令,然后再次运行make命令。touch 选项 文件或目录-r 文件或目录 把指定文件或目录的日期时间,设成和参考文件或目录的日期时间相同-d 日期时间 使用指定的日期时间,而非现在的时间makefile规则make程序基于文件之间的依赖性,需要建立的目标文件,以及建立目标文件时要执行的命令,以上所有被称为规则,存放在文件makefile中。定制规则的语法如下:目标列表 : 关联性列表命令列表注意:1.可以在关联性列表和命令列表中使用shell文件名模式匹配字符,例如?、*、等等。2.如果目标的命令列表中某个命令前面带有,那么当make程序执行时,该命令是不会有反应的,在程序运行完毕之后,所有前面带的命令按照反序执行。可以通过执行make -n命令显示这些命令以供查看。3.如果目标的命令列表中某个命令前面带有-,说明如果该命令执行有误,会跳过该命令并继续执行。make程序使用makefile中的规则决定程序中需要重新编译的文件,并再次链接生成可执行代码。如果源文件上修改的时间戳比目标文件上的时间戳更新,那么make重新编译build中包含的源文件。例如,如果修改了一个.h头文件,make程序就会重新编译所有包含该头文件的源文件,前提是头文件在这些源文件的目标文件的关联性列表中;再如某.c源文件被修改,那么该源文件被重新编译,生成对应的新的目标文件。myprog : foo.o bar.ogcc o myprog foo.o bar.ofoo.o : foo.c foo.h bar.hgcc o foo.o c foo.cbar.o : bar.c bar.hgcc o bar.o c bar.c上述规则中,只要目标文件比冒号后面的文件任何一个旧,将会执行下一行的命令;但是在检查foo.o和bar.o的时间之前,会往下查找那些把foo.o和bar.o作为目标文件的规则;以此类推,并最终回到myprog规则。如何得到每个C文件的输出规则呢?可使用-M和-MM编译选项。注意:使用-M和-MM编译选项时,仅在shell中输出规则信息,不能用于产生可执行文件,即不能写成gcc -o hello -M hello.c这样的形式。gcc M hello.c /输出hello.c和该文件中所有和”包含的头文件gcc MM hello.c /仅输出hello.c和该文件中所有”包含的头文件后缀(隐含)规则make -p命令显示了所有后缀规则列表。为了建立一个目标,make使用程序会遍历一连串的依赖关系,从而决定从何处开始建立。如果没有找到目标文件,make程序按照优先顺序查找源文件,首先查找.c、.f或.s后缀的文件,然后再查找SCCS(带.c后缀)文件,如果没有找到任何一个源文件,make程序就会报告一个异常。make程序知道调用gcc -c xxx.c -o xxx.o的预定义命令,而且还知道目标文件通常和源文件是相同的,这种功能称作标准依赖性,所以foo.o : foo.c foo.h bar.h这样的语句可以简写成foo.o : foo.h bar.h。同时,如果把生成foo.o和bar.o的命令从规则中删除,make将自动查找它的隐含规则(gcc -M/MM输出的代码),然后找到一个适当的命令,命令中会使用一些变量,并且按照一定步骤设定。因此,上述makefile的内容可以根据后缀规则简写成:myprog : foo.o bar.ogcc o myprog foo.o bar.ofoo.o : foo.h bar.hbar.o : bar.h宏定义(变量)makefile中的变量定义可以存储文件名列表、可执行文件名以及编译器标识等,主要是使用如下方法:VAR=name 变量定义define VARnameendef 同上$(VAR) 使用变量,如果变量名为单字符,可以不使用圆括号或花括号$VAR 同上$ 当前目标文件$* 删除了后缀的目标名$ 依赖列表中,比当前目标更新的当前依赖名称(即第一个依赖文件)$ 整个依赖列表$? 依赖列表中,比当前目标更新的当前依赖列表CFLAGS 通常默认值是-O,但是可以被修改未使用后缀规则的makefile文件变成如下:OBJS=foo.o bar.oSOURCES=foo.c bar.cHEADERS=foo.h bar.hCC=gccCFLAGS=-Wall -O -gmyprog : $(OBJS)$(C
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年工业互联网平台SDN在能源行业的应用与效益评估
- 2025年生态旅游可持续发展规划与管理中的智慧旅游应用研究报告
- 2025年细胞治疗临床试验患者招募策略报告
- 2025年工业互联网平台数据加密算法效能解决方案评估报告
- 民法典水务课件
- 2025年高考英语听力专项训练冲刺押题模拟试卷
- 2025年小学英语词汇拓展专项训练冲刺试卷
- 2025年小学数学毕业升学考试综合试卷及解析
- 2025年公务员考试行测言语理解专项试卷:逻辑判断与推理备考手册
- 2025年高考政治哲学原理专项训练试题
- GB/T 5184-2016叉车挂钩型货叉和货叉架安装尺寸
- GB/T 24151-2009塑料玻璃纤维增强阻燃聚对苯二甲酸丁二醇酯专用料
- 考研英语5500词汇表讲解
- MSA测量系统分析第四版
- 围手术期质量评价标准(手术室)
- 化学品安全技术说明(胶水)
- 吊篮操作工岗位风险告知卡
- 输血法律法规培训PPT
- 海姆立克急救(生命的拥抱)课件
- 越南语基础实践教程1第二版完整版ppt全套教学教程最全电子课件整本书ppt
- 标准化项目部驻地建设方案(五星级)
评论
0/150
提交评论