版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、嵌入式开发教程包括Make命令和Makefile (下)、概述1、多个营销对象2、内部规则3、后缀规则4、Make中的库5、Makefile和子目录查询6、用于管理GNU make和gcc的选项7、概述、1、和本文进一步介绍了化妆和化妆文件的功能。 摘要、2、有时在一个makefile中生成多个单独的营销对象文件,或者将多个命令组合在一起。 例如,下面的makefile 3示例添加了clean选项以清除不需要的营销对象文件。 将使用install选项生成的应用程序移动到另一个目录查询。此makefile与上一个makefile类似。区别作者用黑体标识: all: main#使用的编译程序CC=
2、gcc#安装位置instdir=/usr/lock bin# include文件的位置INCLUDE=.#开发过程中使用的选项cclude一,嵌入式开发教程:建构多个目标,3 #发行时使用的选项# cflags=-o-wallansimain 3360 main.of1 内置开发教程,4,- RM main.cf 2内置开发教程,- omain main.of1. of2. om main cmain.cf1. o : f1. cdef1. hde f2. h $ (cc )-I $ (包括) $ (cflags )-cf1. cf 2内置开发教程(英国)国际货币基金组织; chmod ax
3、$ (安装) /主; chmod og-w $ (安装) /主; echo“已安装”; else echo“存储、$ (instdir )不执行”; fi,嵌入式开发教程,5,这个化妆文件需要注意的是,这里有特别的目标all,但最终是以主要为目标。 因此,即使在执行make命令时命令行中未指定特定营销对象,也会编译连接的main plum计程仪程序。 接下来,请注意“清理”和“安装”两个目标。 “营销对象清理”与模块无关。 因为没有可比较的时间斯坦共和国类型,所以总是执行。实际上,它的目的是引出后续的rm命令来删除一些营销对象文件。 rm命令以-开头,表示make将忽略命令结果,因此,即使没有
4、删除rm命令的营销对象,如果返回错误,则make clean将继续执行。 由于以下营销对象install依赖于main,因此make知道必须先创建main,然后才能发出安装命令。 用于安装的命令由几个shell命令组成。 嵌入式开发教程,6,make调用shell来执行规则,并为每个规则生成一个新的shell。因此,要在一个shell中执行这些个命令,必须添加巴克斯冲突,使所有命令都位于同一逻辑行中。 此命令以开头,表示在执行规则之前,打印命令不会标准输出。 为了安装应用程序,营销对象install连续执行多个命令,直到执行下一个命令,才会检查上一个命令是否成功。 fi、嵌入式开发教程,7,它
5、将shell的and命令添加到命令中,以便后续命令只有在前面的命令成功时才能执行。 在这里不需要在意前面的命令是否成功,请留心的这个用法。 在/usr /local/bin目录查询中安装新命令需要权限。 在调用make install命令之前,您可以让Makefile使用其他安装目录查询、更改目录查询权限或切换到超级用户。如下所示的$ RM *.omain $ make-fmymakefile3g cc-I.- g-wall-ansi-cmain.cgcc-I.- g-wall-ansi -。 嵌入式开发教程,8 $ make-fmymakefile3make : nothingtobedon
6、eforall.$ RM main $ make-fmymakefile 3安装gcc-omain.of1bin $ m 首先,删除main和所有营销对象文件计程仪报。 因为以all为营销对象,所以main我们再次执行make命令时,main是最新的,所以make什么都不做。 然后删除main进程文件并运行main安装。 这将重新创建二进制文件main,并将其复制到安装目录查询。 最后,使用make clean命令删除所有的营销对象计程仪程序。嵌入式开发教程,10,到目前为止,您已经为makefile提供了适当的规则,并指导了具体的处理过程。 事实上,除了明确指定的规则外,make还有许多内部
7、规则,它们是预定义的营销对象、依赖关系文件及其命令组成的关系行。 内部规则有助于简化makefile,尤其是在有很多源文件的情况下。 举个例子,首先创建一个名为foo.c的c普计程仪拉姆源文件。 文件的内容如下: # include # include int main () printf (“hello world n”); exit(EXIT_SUCCESS ) :二,嵌入式开发教程:内部规则,11,使用make命令编译: $ makefooccfoo.c-ofoo $尽管未指定makefile,但make对编译程序的调用因为cc经常与gcc计程仪程序网络链接。 由于这完全得益于make中
8、内置的内部规则,而这些个的内部规则通常使用宏命令,因此,只需为这些个宏命令指定新值,即可按如下方式修改内部规则的奥尔特函数: $ RM foo $ makecc=gcc cflags=-wall- 内部规则不仅包括c源计程仪程序文件及其营销对象文件,还包括各种类型的文件,如SCCS文件、yacc文件、lex文件和shell文件。 当然,我更关心利用内部规则来简化化妆文件。 例如,通过内部规则负责生成目标并仅指定依赖关系,makefile变得简洁。 如下所示:主机1.HF1. o 3360 f1. cdef1. hde f2. o 3360 f2. cdef2. hde f3. h 也就是说,当
9、make看到带有后缀的文档时,他们可以知道要使用哪些规则创建另一个带有后缀的文档。 最常见的是创建以. c结尾的文档,以. o结尾的文档。 也就是说,将源文件编译到营销对象计程仪程序中,但不连接。 下面是后缀规则的一个应用示例。 在某些情况下,您可能需要在不同的平台(如Windows或Linux )上编译源文件。 假设原代码用c写,则在Windows中后缀为. cpp。 但是,Linux使用的make版本没有用于编译. cpp文件的内部规则,并且有用于. cc的规则。 这是因为在UNIX执行操作系统上,c文件的扩展名通常为. cc。 演示如何为每个源文件单独指定规则,或者创建一个新的make规
10、则,以使用扩展名为. cpp的源文件生成营销对象文件。 如果项目工程中的源文件多,后缀规则就有用。 要添加新后缀规则,可以首先在makefile中添加一行,以指明makefile的新后缀是什么,并且可以添加使用此新后缀的规则。此时,make是专用语法:三,嵌入式开发教程:后缀规则,14,其作用是定义公用规则,将旧后缀文件更改为新后缀文件,例如,将. cpp文件编译为. o。 文件名保持不变,可以使用新的公用规则(.suffixes :CPP.CPP.o : $ (cc )-xc $ (cflags )-I $ (包括)-c $ ) 其中标志“-xc”的作用是向gcc传达此次编译的源文件是c源文
11、件。 在此处,使用宏命令$指定要编译的文件的名称,而与要编译的文件名无关。 所有以. cpp为后缀的文件都编译为以. o为后缀的文件。 例如,app.cpp中的文件为app.o。 嵌入式开发教程,15,注意,我们只需向make说明如何将. cpp文件更改为. o文件,make已经知道如何将营销对象程序计程仪文件更改为二进制可执行文件因此,调用make plum计程仪程序时,将使用新规则将app.cpp等计程仪程序更改为app.o,然后使用内部规则将app.o文件连接到可执行文件app。 make现在知道如何处理扩展名为. cpp的c源文件,并且可以使用后缀规则将文件从一种类型转换为另一种类型。
12、 但是,新版本的make包含用于获得相同效果的语法。 例如,模式规则使用%作为与文件名匹配的直通功能,与文件扩展名无关。 以下模式规则相当于在上面处理. cpp的规则。 具体而言,是%.CPP 3360 % o $ (cc )-xc $ (标志)-I $ (包括)-c $,嵌入式。 实际上,为了简化库的管理,make plum还提供了一个名为lib (file.o )的语法。 这意味着营销对象文件file.o存储为库文件lib.a,并且lib.a库依赖于营销对象计程仪程序file.o。 此外,make命令还具有与. c.a : $ (cc )-c $ (cflags ) $ (ar ) $ (
13、ar flags ) $ (ar flags ) $相对应的内部规则。 如前所述,要告诉make使用. c文件生成. a库,需要两个规则。 第一个规则是将源文件编译为营销对象计程仪报文件。 第二条规则表示使用ar命令将新的营销对象文件添加到库中。 因此,如果存在包含bar.o文件的名为filed的库,则第一条规则中的$将替换为bar.c,第二条规则中的$将替换为库名称filed.a,$*将替换为bar。 四、嵌入式开发教程:以make管理库、17、make管理库为例进行说明。 实际上,在make中管理库的规则很简单。 例如,您可以修改上一个示例,将f1.o和f2.o放入名为mylib.a的库中
14、。 这个时候的化妆文件几乎没有必要更改。 新的mymakefile4看起来像是all: main#使用的编译程序CC=gcc#的安装位置INSTDIR=/usr/local/bin# include文件的位置INCLUDE=.# .发布时的选项# CFLAGS=-O -Wall ansi,嵌入式开发教程,18,本地库mylib=mylib.amain :主. o $ (mylib ) $ (cc ) -主. o $ (mylib ) $ (mylib ) 主机1.HF1. o 3360 f1. cdef1. hdef2. HF2. o 3360 f2. cdef2. hde f3. h清洁33660清洁主机$ (instdir
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025 文言文文本的整体理解与把握课件
- 医学文献翻译试题及答案
- 血透室过敏应急预案
- 2025年临床执业医师《实践技能》测试卷
- 医保定点机构自查自纠专项培训试题及答案
- 生药学选择题试题及答案
- 医疗美容机构法律法规及质量管理岗前培训试题及答案
- 医疗卫生行风建设三基三严题库及答案
- 市政道路排水工程施工组织设计范本
- 193红色消防员背景的消防安全宣传培训模板下载 2
- 水彩画教学课件
- 《老年服务礼仪与沟通技巧》全套教学课件
- 桥梁项目汇报内容
- 人教版新教材小学二年级《数学》上册新教材解读课件
- 新工科大学英语 课件 Unit 1 Future by design;Unit 2 Living smarter,living better
- 拖欠农民工工资培训课件
- 乡风文明建设课件
- 毕业设计(论文)-水下4自由度抓取机械臂设计-scara机器人
- 金融风控模型建设及管理规范
- 《陶瓷工艺概览:课件中的釉料组成与特性》
- 任务一淘米(教学课件)一年级下册劳动技术(人美版)
评论
0/150
提交评论