- 1、本文档共129页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
linux。chap3
上面示例的Makefile在实际中是几乎不存在的,因为它过于简单,仅包含两个文件和一个命令,在这种情况下完全不必要编写Makefile而只需在Shell中直接输入即可。 在实际中使用的Makefile往往是包含很多的文件和命令的,这也是Makefile产生的原因。 1?sunq:?kang.o?yul.o2? gcc?kang.o?yul.o?-o?sunq3?4?kang.o:?kang.c?kang.h5? gcc?-wall?-o?-g?-c?kang.c?-o?kang.o6?yul.o:?yul.c?yul.h7? gcc?-wall?-o?-g?-c?yul.c?-o?yul.o Makefile的规则是Make进行处理的依据,它包括了目标体、依赖文件及其之间的命令语句。 一般的,Makefile中的一条语句就是一个规则。在前面的例子中,都显示地指出了Makefile中的规则关系: 如 “gcc –c hello.c –o hello.o” 或 “$(CC) $(CFLAGS) -c $ -o $@” 但为了简化Makefile的编写,make还定义了隐式规则和模式规则 模式规则 模式规则是用来定义相同处理规则的多个文件的。它不同于隐式规则,隐式规则仅仅能够用make默认的变量来进行操作,而模式规则还能引入用户自定义变量,为多个文件建立相同的规则,从而简化Makefile的编写。 模式规则的格式类似于普通规则,这个规则中的相关文件前必须用“%”标明。 将输出编译过程: gcc?-Wall?-c?-o?hello.o?hello.c ? gcc?-Wall?-c?-o?hello_fn.o?hello_fn.c ? gcc?hello.o?hello_fn.o?-o?hello? autoconf是一个用于产生可以自动配置源代码包,生成Shell脚本的工具,它可以适应各种类Linux系统的需要。autoconf产生的配置脚本在运行时独立于autoconf,也就是说使用这些脚本的不需要安装autoconf。 autoconf生成的配置脚本通常名称是configure,得到这个文件,通常需要以下的依赖文件: (1)make 键入make默认执行”make all”命令,即目标体为all,其执行情况如下所示: root@localhost automake]#?make 此时在本目录下就生成了可执行文件“hello”,运行“./hello”能出现正常结果,如下所示:? [root@localhost automake]#?./hello Hello everyone! 例如: objects = foo.o bar.o # objects 一个变量 all: $(objects) $(objects): %.o: %.c #从$object中获取依赖目标 “foo.c bar.c” $(CC) -c $(CFLAGS) $ -o $@ # “$”表示所有的依赖目标 #集(也就是“foo.c bar.c”),“$@”表示目标集(也就 #是“foo.o bar.o”) 等价于: foo.o : foo.c$(CC) -c $(CFLAGS) foo.c -o foo.obar.o : bar.c$(CC) -c $(CFLAGS) bar.c -o bar.o Makefile的编写 3、Makefile的规则 五、Make工程管理器 Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。 1、显式规则。显式规则说明了,如何生成一个或多的的目标文件。这是由Makefile的书写者明显指出,要生成的文件,文件的依赖文件,生成的命令。 2、隐含规则。由于我们的make有自动推导的功能,所以隐含的规则可以让我们比较粗糙地简略地书写Makefile,这是由make所支持的。 3、变量的定义。在Makefile中我们要定义一系列的变量,变量一般都是字符串,这个有点你C语言中的宏,当Makefile被执行时,其中的变量都会被扩展到相应的引用位置上。 Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。 4、文件指示。其包括了三个部分,一个是在一个Makefile中引用另一个Makefile,就像C语言中的include一样;另一个是指根据某些情况指定Makefile中的有效部分,就像C语言中的预编译#if一样;还有就是定义一个多行的命令。有关这一部分的内容,我会在后续
文档评论(0)