文档详情

嵌入式Linux系统项目工程管理.ppt

发布:2025-03-02约5.45千字共10页下载文档
文本预览下载声明

一个软件的构造过程中,很多步骤是固定的,因此很多时候可以简化处理,01这是Makefile最大优势02在复杂项目里,为了简化Makefile的书写,往往会采用扩展写法,这些方03法包括变量内置规则04Makefile的简化VAR=value递归展开方式定义的变量是在变量引用时进行替换的。这种方式在处理形如CFLAGS=$(CFLAGS)-g的变量时可能导致无穷循环,最终导致溢出。递归展开方式定义VAR:=value简单扩展方式变量的值在定义展开,并且只展开一次消除了上面无穷循环的问题。简单扩展方式定义自定义变量预定义变量1、Make工程管理器维护了一些预定义变量,可以在Makefile中直接使用(1)CCC编译器的名称,默认值为cc。(2)CFLAGSC编译器的选项,无默认值。(3)LDFLAGSC链接器的选项,无默认值。如:使用数学函数库LDFLAGS=-lm(4)RM文件删除程序名称,默认值为rm–f(5)AR归档维护程序的名称,默认值为ar。(6)ARFLAGS归档维护程序的选项,无默认值。(7)CXXC++编译器的名称,默认值为g++。(8)CXXFLAGSC++编译器的选项。2、在Makefile内可以使用自定义变量来覆盖预定义变量如:ARFLAGS=crvsCC=gcc自定义与预定义变量示例对每一条Makefile规则,Make维护了一些自动变量。1$第一个依赖文件的名称。2$@目标的完整名称。3$^所有的依赖文件,以空格分开,不包含重复的依赖文件。4$*不包含扩展名的目标文件名称。5$+所有的依赖文件,以空格分开,并以出现的先后为序,可能包含6重复的依赖文件。7$?所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标8的创建日期晚。9$%如果目标是归档成员,则该变量表示目标的归档成员名称10自动变量自动变量示例内置规则用GCC编译一个程序的步骤都是固定的,GNUmake会内置有一些规则。来简化这一些固定步骤1、隐式规则(1)隐式规则告诉make怎样使用传统技术完成任务,不必在Makefile中指定编译的具体细节,而只需要把目标文件列出来即可(2)make自动使用隐式规则来确定如何生成目标文件(3)最重要的隐式规则:所有的“file.o”文件都可以自动由file.c文件使用命令$(CC)$(CFLAGS)-cfile.c-ofile.o生成.隐式规则示例有时候多个文件具有相同的处理规则,这时候就要自定义模式规则,即相同模式的目标共用的规则所有的.o文件依赖于对应的.c文件的模式规则%.o:%.c$(CC)$(CFLAGS)-c$-o$@模式规则会覆盖隐式规则,一般建议Makefile都用自己隐含规则来代替缺省规则,这样比较容易读懂,并且容易调整模式规则内置规则模式规则示例课程安排Linux项目工程管理的概念项目工程管理文件MakefileAutotool自动生成MakefileLinux开源项目嵌入式移植而且Makefile而且常常会受到自己的开发环境的限制,只要环境参数不同或者路径更改,可能Makefile就得跟着修改较大项目Makefile都是相当复杂,手工编写有相当难度Autotools:辅助生成Makefile的GNU工具应运而生!绝大部分开源项目都是用Autotools生成Makefile,因此Autotools是嵌入式Linux开发必须掌握的工具集。那么有没有为复杂工程自动生成Makefile的方法?Autotools简介autoconf:生成可以自动地配置软件源码包,用以适应多种UNIX类系统的shell脚本工具,最后生成可执行程序configureautomake:从Makefile.am文件自动生成Makefile.in的工具,configure程序使用Makefile.in生成Makefilelibtool:方便生成各种程序库的工具Autotools必要工具Automake流程图Autotools项目配置过程1、准备automake必需的配置文件Makefile.am(1)为顶层目录创建Makefile.am文件AUTOMAKE_OPTIONS=foreign#指示automake代码级别,默认级别为gnu,GNU规定自由软件发布必NEWS/README/AUTHORS/C

显示全部
相似文档