欢迎来到天天文库
浏览记录
ID:6707723
大小:25.00 KB
页数:6页
时间:2018-01-23
《编写包含多文件的makefile》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、编写包含多文件的Makefile1.实验目的通过对包含多文件的Makefile的编写,熟悉各种形式的Makefile,并且进一步加深对Makefile中用户自定义变量、自动变量及预定义变量的理解。2.实验过程(1)用Vi在同一目录下编辑两个简单的Hello程序,如下所示: #hello.c#include"hello.h"intmain(){ printf("Helloeveryone!");}#hello.h#include (2)仍在同一目录下用Vi编辑Makefile,且不使用变量替换,用一个目标体实现(即直接将hel
2、lo.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
3、.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.oCC:=Gcchello:$(OBJS) $(CC)$^-o$@
4、 (7)退出保存,在shell中键入:make,查看结果。(8)用Vi编辑Makefile1,如下所示: hello:hello.o Gcchello.o-ohellohello.o:hello.chello.h Gcc-chello.c-ohello.o (9)退出保存,在shell中键入:make-fMakefile1,查看结果。(10)再次用Vi编辑Makefile1,如下所示: OBJS1:=hello.oOBJS2:=hello.chello.hCC:=Gcchello:$(OBJS1) $(CC)$^-o$@$(O
5、BJS1):$(OBJS2) $(CC)-c$<-o$@ 在这里请注意区别“$^”和“$<”。(11)退出保存,在shell中键入:make-fMakefile1,查看结果4.实验结果各种不同形式的makefile都能完成其正确的功能。3.8.4 使用autotools生成包含多文件的Makefile1.实验目的通过使用autotools生成包含多文件的Makefile,进一步掌握autotools的正确使用方法。同时,掌握Linux下安装软件的常用方法。2.实验过程(1)在原目录下新建文件夹auto。(2)利用上例的两个代码文件“hello.c
6、”和“hello.h”,并将它们复制到该目录下。(3)使用autoscan生成configure.scan。(4)编辑configure.scan,修改相关内容,并将其重命名为configure.in。(5)使用aclocal生成aclocal.m4。(6)使用autoconf生成configure。(7)使用autoheader生成config.in.h。(8)编辑Makefile.am。(9)使用automake生成Makefile.in。(10)使用configure生成Makefile。(11)使用make生成hello可执行文件,并在当前目录下运
7、行hello查看结果。(12)使用makeinstall将hello安装到系统目录下,并运行,查看结果。(13)使用makedist生成hello压缩包。(14)解压hello压缩包。(15)进入解压目录。(16)在该目录下安装hello软件。3.实验步骤(1)mkdir./auto。(2)cphello.*./auto(假定原先在“hello.c”文件目录下)。(3)命令:autoscan。(4)使用Vi编辑configure.scan为: # -*-Autocon
8、f-*-#Processthisfilewithautoconft
此文档下载收益归作者所有