当前位置:文档之家› 实验四:Makefile 实验

实验四:Makefile 实验

实验四:Makefile 实验
一、实验目的:
1、了解make;
2、了解makefile;
3、掌握makefile 编程;
二、实验内容:
通过makefile 来编译程序
三、实验设备:
PC 机、飞凌6410 开发板
四、实验原理:
1、MAKE
当运行make 命令时,make 命令会在当前目录下按顺序寻找文件名为“GUNmakefile”、“Makefile”、“makefile”的文件,找到后解释这些文件。

所以说make是一个解释makefile 中指令的命令工具。

Makefile 或makefile: 告诉make 维护一个大型程序,该做什么。

Makefile 说明了组成程序的各模块间的相互关系及更新模块时必须进行的动作,make 按照这些说明自动地维护这些模块。

简单的说makefile 就像批处理的脚本文件,里边写好了一些命令的集合,当运行make 命令时,便会按着makefile 提供的命令及顺序来完成编译。

Makefile 文件包含了五部分内容:显示规则、隐式规则、变量定义、文件指示和注释
2、Makeile 中的变量
Makefile 里的变量就像一个环境变量。

事实上,环境变量在make 中也被解释成make 的变量。

这些变量对大小写敏感,一般使用大写宇母。

几乎可以从任何地方引用定义的变量。

Makefile 中的变量是用一个文本串在Makefile 中定义的,这个文本串就是变量的值。

只要在一行的开始写下这个变量的名字,后面跟一个“=”号,以及要设定这个变量的值即可定义变量,下面是定义变量的语法:
VARNAME=string
使用时, 把变量用括号括起来, 并在前面加上$ 符号, 就可以引用变量的
值:${VARNAME}
3、Make 工作时的执行步骤
(1)读入所有的makefile 文件;
(2)读入被include 包括的其他makefile 文件;
(3)初始化文件中的变量;
(4)推到隐士规则,并分析所有规则;
(5)根据依赖关系,决定哪些目标要重新生成;
(6)执行生成命令;
第(1)~(5)步为第一个阶段,第(6)~(7)步为第二个阶段。

第一个阶段中,如果定义的变量被使用了,make 会在它使用的位置把它展开。

但make 并不会马
上完全展开,make 使用的是拖延战术。

如果变量出现在依赖关系的规则中,进当这条依赖关系决定要使用时,变量才会在其内部展开。

五、实验内容
1、敲代码code.c,code.h,prog.c,prog.h,prog.o,test.c 还有
makefile
2、编译及运行
上次课上学习了本机编译和交叉编译,这次的编译也分两种编译,但是由于makefile的存在,使得这两种的编译步骤几乎相同。

1、打开makefile,其中最上面的两行,决定了是使用本机还是交叉编译。

2、本机编译
3、交叉编译
4、开发板运行程序
六、实验心得
本实验实施过程比较简单,由于文件代码在实验指导书中都已经给出,也减少了许多工作量。

但是在实验代码的复制过程中未看清楚格式,导致格式不对,make时失败了好几次。

同时,根据这个实验,见识到了make功能的强大功能,可以方便地集合运行多个文件,
在大型程序中起着至关重要的作用。

相关主题