一、实验目标
掌握makefile文件的配置,
二、实验内容
1.思路:
通过编辑makefile配置文件,简化编译工作。利用 vi edtor 手动编写代码例子后,用 make utility 编译工具进行编译,查看编译过程并分析
2.主要代码
2.过程及运行结果展示
修改 b.h 头文件,用 make utility 重新进行编译,查看编译过程并比较分析。
把生成的2.o文件删除,重新执行 make 操作,并查看结果
利用宏定义 Makefile 进行编译,删除所生成的目标文件,并重新执行 make 操作,并查看结果
三、实验结论
Make Utility 是一个命令解释工具,它解释配置文件中的指令(规则),可以只针对被修改的源文件进行重新编译。我们可以通过 Makefile 来编译配置文件;定义编译时的编译规则(来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译);定义了源文件编译中、编译后,对生成文件的配置和管理(存放规则等)。Makefile宏指令是编译 Makefile 时更一般的形式,可以指定编译选项,提高效率。
附录:实验源码
//a.h
#include<stdio.h>
void function_two();
void function_three();
//b.h
#include<stdio.h>
#include<stdlib.h>
void function_two();
//c.h
#include<stdio.h>
void function_three();
//2.c
#include "a.h"
#include "b.h"
void function_two(){
printf(" This is 2\n");
}
//3.c
#include "a.h"
#include "b.h"
void function_three(){
printf(" This is 3\n");
}
//main.c
#include "a.h"
extern void function_two();
extern void function_three();
int main()
{
function_two();
function_three();
return 0;
}
//Makefile1
myapp: main.o 2.o 3.o
gcc -o myapp main.o 2.o 3.o
main.o: main.c a.h
gcc -c main.c
2.o: 2.c a.h b.h
gcc -c 2.c
3.o: 3.c b.h c.h
gcc -c 3.c
//Makefile2
all: myapp
# Which compiler
CC = gcc
# Where are include files kept
INCLUDE = .
# Options for development
CFLAGS = -g -Wall -ansi
# Options for release
CFLAGS = -O -Wall -ansi
myapp: main.o 2.o 3.o
$(CC) -o myapp main.o 2.o 3.o
main.o: main.c a.h
$(CC) -I$(INCLUDE) $(CFLAGS) -c main.c
2.o: 2.c a.h b.h
$(CC) -I$(INCLUDE) $(CFLAGS) -c 2.c
3.o: 3.c b.h c.h
$(CC) -I$(INCLUDE) $(CFLAGS) -c 3.c