欢迎来到天天文库
浏览记录
ID:50078862
大小:89.50 KB
页数:13页
时间:2020-03-08
《嵌入式系统实验教程 教学课件 作者 鲍喜荣 实验二 Makefile实验.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验二Makefile实验1提纲实验目的实验原理实验内容实验小结习题与思考题实验目的了解Makefile的概念和构成学会编写Makefile会使用GNUmake编译一个或者多个文件Makefile的规则如果这个工程没有编译过,那么我们的所有C文件都要编译并被链接。如果这个工程的某几个C文件被修改,那么我们只编译被修改的C文件,并链接目标程序。如果这个工程的头文件被改变了,那么我们需要编译引用了这几个头文件的C文件,并链接目标程序。Makefile的基本结构目标---需要由make工具创建的项目,通常是目标
2、文件和可执行文件。依赖---要创建的项目依赖于哪些文件命令---创建每个项目时需要运行的命令target:dependency...command...Makefile变量#DefinemacrosfornameofcompilerCC=gcc#DefineamacrofortheCCflagsCCFLAGS=-g//gcc指令的选项设置#Aruleforbuildingaobjectfiletest.o:test.ctest.h$(CC)-c$(CCFLAGS)test.cMakefile主要预定义变量
3、及隐含规则预定义变量及其含义CCCCFLAGS……GNUmake支持两种类型的隐含规则:后缀规则(SuffixRule)模式规则(patternrules)实验内容--使用命令编译程序使用命令编译程序$(CC)$(CFLAGS)hello.o-ohellohello.o:hello.c$(CC)$(CFLAGS)-chello.c-ohello.o实验内容--使用预定义变量$(CC)$(CFLAGS)$^-o$@hello.o:hello.c$(CC)$(CFLAGS)-c$<-o$@实验内容--使用预定
4、义变量对多个c文件编译all:hellohello:hello1.ohello2.o$(CC)$(CFLAGS)$^-o$@hello1.o:hello1.c$(CC)$(CFLAGS)-c$<-o$@hello2.o:hello2.c$(CC)$(CFLAGS)-c$<-o$@使用wildcard对多个.c文件编译wildcard’函数的一个功能是找出目录中所有的’.c’文件:$(wildcard*.c)SOURCES=$(wildcard*.c)这行会产生一个所有以'.c'结尾的文件的列表,然后存入变
5、量SOURCES里。当然你不需要一定要把结果存入一个变量。使用wildcard对多个.c文件编译CC=gccCFLAGS=-Wall-O2/*-wall:生成所有级别警告信息,-O2:比-01进行更多的代码优化*/CFILES=$(wildcard*.c)OBJS=$(CFILES:%.c=%.o)all:hellohello:$(OBJS)$(CC)$(CFLAGS)-ohello$(OBJS).c.o:思考与习题工程中多级目录中存在着多个makefile时,编译的顺序如何?如果要编译生成的文件能够在E
6、ELIOD实验平台上面使用,应该怎么对makefile修改?
此文档下载收益归作者所有