- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验一:Makefile实验
实验目的
了解make
了解makefile
掌握makefile编程
实验仪器
PC机,飞凌6410开发板
实验内容
Make
Make是大型程序的维护工具。
makefile
当运行make命令时,make命令会在当前目录下按顺序寻找文件名为“GUNmakefile、Makefile、makefile的文件,找到后解释这些文件。所以说make是一个解释makefile中指令的命令工具。Makefile或makefile:告诉make维护一个大型程序,该做什么。Makefile说明了组成程序的各模块间的相互关系及更新模块时必须进行的动作,make按照这些说明自动地维护这些模块。简单的说makefile就像批处理的脚本文件,里边写好了一些命令的集合,当运行make命令时,便会按着makefile提供的命令及顺序来完成编译。Makefile文件包含了五部分内容:显示规则、隐式规则、变量定义、文件指示和注释。
Mkefile中的变量
Makefile里的变量就像一个环境变量。事实上,环境变量在make中也被解释成make的变量。这些变量对大小写敏感,一般使用大写宇母。几乎可以从任何地方引用定义的变量。Makefile中的变量是用一个文本串在Makefile中定义的,这个文本串就是变量的值。只要在一行的开始写下这个变量的名字,后面跟一个“二”号,以及要设定这个变量的值即可定义变量。
Make工作时的执行步骤
读入所有的makefile文件
读入被include包括的其他的makefile文件
初始化文件中的变量
推到隐式规则,并分析所有规则
为所有的目标文件创建依赖关键链
根据依赖关系,决定哪些目标要重新生成
执行生成命令
实验程序
使用Makefile对多个程序进行本机编译:
实验代码如下:
code.c
#includecode.h
#includestdio.h
void circle(float r)
{
? ? printf(format_circle,2*PI*r);
}
prog.c
#includeprog.h
#includecode.h
#includestdio.h
area(float r)
{
? ? printf(r=%f\n,r);
? ? printf(format_area,PI*r*r);
? ? printf(thank yoi\n);
}
test.c
#includestdio.h
extern area(float);
extern circle(float);
main()
{
? ? printf(make file test start\n);
? ? area(2.5);
? ? circle(2.5);
? ? return 0;
}
code.h
#define PI 3.141926
#define format_circle circle=%f\n
prog.h
#define format_area area=%f\n
Makefile
#CC=/usr/local/arm/4.3.2/bin/arm-linux-gcc
CC=gcc
test: prog.o code.o main.o
? ? $(CC) -o test prog.o code.o main.o
main.o: test.c
? ? $(CC) -o main.o -c test.c
prog.o: prog.c prog.h code.h
? ? $(CC) -c prog.c -o prog.o
code.o: code.c code.h
? ? $(CC) -c code.c -o code.o
clean:
? ? rm -f *.O
实验步骤
本机编译
本机编译需要使用本机编译器,修改Makefile文件:也就是将CC改成gcc” CC=gcc”,将交叉编译器屏蔽掉(用#屏蔽)
#CC=/usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-gcc
CC=gcc
保存退出
交叉编译
修改Makefile文件,屏蔽掉Makefile文件中的#CC=gcc (用#屏蔽),这样使编译器指向arm-linux-gcc
CC=/usr/local/arm/4.3.2/bin/arm-linux-gcc
#CC=gcc
保存退出
运行结果
本机编译
交叉编译
实验心得
通过本次实验我了解了Makefile文件的编写,本地编译与交叉编译的区别。使用make命令不需要gcc一条一条的编译,方便操作.
您可能关注的文档
最近下载
- 事业单位招聘综合知识和能力素质真题及答案.docx VIP
- 检验科SOP规范样本.pdf VIP
- 孕产妇死亡评审制度(最新版).doc VIP
- 精品解析:辽宁省沈阳市第四十三中学2025-2026学年上学期七年级数学期中考试试题(原卷版).docx VIP
- Ovation算法.ppt VIP
- DLT 5700-2014 城市居住区供配电设施建设规范.pdf VIP
- RCS-9613线路光纤纵差保护测控装置.doc VIP
- 2025年绵阳市中考语文试题卷(含答案解析).docx
- 2025最新党政领导干部拟任县处级资格考试试题及答案.docx VIP
- 新业态模式下如何认定劳动关系.docx VIP
原创力文档


文档评论(0)