Linux下C编程基础之:实验内容
3.7.3编写包含多文件的makefile
1.实验目的
通过对包含多文件的makefile的编写,熟悉各种形式的makefile,并且进一步加深对makefile中用户自定义变量、自动变量及预定义变量的理解。
2.实验过程
(1)用vi在同一目录下编辑两个简单的hello程序,如下所示:
#hello.c
#includehello.h
intmain()
{
printf(Helloeveryone!n);
}
#hello.h
#includestdio.h>
(2)仍在同一目录下用vi编辑makefile,且不使用变量替换,用一个目标体实现(即直接将hello.c和hello.h编译成hello目标体)。然后用make验证所编写的makefile是否正确。
(3)将上述makefile使用变量替换实现。同样用make验证所编写的makefile是否正确。
(4)编辑另一个makefile,取名为makefile1,不使用变量替换,但用两个目标体实现(也就是首先将hello.c和hello.h编译为hello.o,再将hello.o编译为hello),再用make的“-f”选项验证这个makefile1的正确性。
(5)将上述makefile1使用变量替换实现。
3.实验步骤
(1)用vi打开上述两个代码文件“hello.c”和“hello.h”。
(2)在shell命令行中用gcc尝试编译,使用命令:“gcchello.c–ohello”,并运行hello可执行文件查看结果。
(3)删除此次编译的可执行文件:rmhello。
(4)用vi编辑makefile,如下所示:
hello:hello.chello.h
gcchello.c-ohello
(5)退出保存,在shell中键入:make,查看结果。
(6)再次用vi打开makefile,用变量进行替换,如下所示:
OBJS:=hello.o
CC:=gcc
hello:$(OBJS)
$(CC)$^-o$@
(7)退出保存,在shell中键入make,查看结果。
(8)用vi编辑makefile1,如下所示:
hello:hello.o
gcchello.o-ohello
hello.o:hello.chello.h
gcc-chello.c-ohello.o
(9)退出保存,在shell中键入:make-fmakefile1,查看结果。
(10)再次用vi编辑makefile1,如下所示:
OBJS1:=hello.o
OBJS2:=hello.chello.h
CC:=gcc
hello:$(OBJS1)
$(CC)$^-o$@
$(OBJS1):$(OBJS2)
$(CC)-c$-o$@
在这里请注意区别“$^”和“$”。
(11)退出保存,在shell中键入make-fmakefile1,查看结果。
4.实验结果
各种不同形式的makefile都能正确地完成其功能。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)
评论