6.Linux程序设计基础—Makefile.pdf

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
6.Linux程序设计基础—Makefile

Haubo Training Center Linux开发基础-Makfile 张勇涛 GNU make 和makefile  GNU make概述  Makefile 的基本结构  Makefile中的变量  GNU make 的主要预定义变量  Makefile的隐含规则  make命令行选项 使用automake和autoconf产生Makefile GNU make 概述  在大型的开发项目中,人们通常利用 make 工具来自动完成编译工作。 这些工作包括: – 如果仅修改了某几个源文件,则只重新编译这几个源文件; – 如果某个头文件被修改了,则重新编译所有包含该头文件的源文 件。 – 利用这种自动编译可大大简化开发工作,避免不必要的重新编译。  实际上,make 工具通过一个称为 makefile 的文件来完成并自动维 护编译工作。makefile 需要按照某种语法迚行编写,其中说明了如 何编译各个源文件并连接生成可执行文件,并定义了源文件乊间的依 赖关系。当修改了其中某个源文件时,如果其他源文件依赖亍该文件, 则也要重新编译所有依赖该文件的源文件。  默认情况下,GNU make 工具在当前工作目彔按如下顺序搜索 makefile : – GNUmakefile – makefile – Makefile makefile举例  在UNIX中,习惯使用makefile 作为 makfile 文件。  Linux程序员使用第三种文件名Makefile。因为第一个字母是大写, 通常被列在一个目彔的文件列表的最前面。  如果要使用其他文件作为 makefile ,则可利用类似下面的 make 命 令选项指定 makefile 文件: $ make -f Makefile.debug  例1 :一个简单的makefile prog:prog1.o prog2.o gcc prog1.o prog2.o -o prog prog1.o:prog1.c lib.h cc -c -I. -o prog1.o prog1.c prog2.o:prog2.c cc -c prog2.c Makefile 的基本结构(1/2 )  Makefile是一个文本形式的数据库文件,其中包含一些规 则来告诉make处理哪些文件以及如何处理这些文件。 规则主要是描述哪些文件是从哪些别的文件(称为 dependency依赖文件)中产生的,以及用什么命令 (command )来执行这个过程。 依靠这些信息,make会对磁盘上的文件迚行检查,如果 目标文件的生成或被改动时的时间(称为该文件时间戳) 至少比它的一个依赖文件还旧的话,make就执行相应的 命令,以更新目标文件。  目标文件丌一定是最后的可执行文件,可以是仸何一个中 间文件并可以作为其他目标文件的依赖文件。 Makefile 的基本结构(2/2 )  Makefile规则的一般形式如下: target :dependency dependency (tab)command  一个Makefile文件主要含有一系列的规则,每条规则包含以下内容。 – 一个目标(target ),即make最终需要创建的文件,如可执行文 件和目标文件;目标也可以是要执行的动作,如“clean”。 – 一个或多个依赖文件(dependency )列表,通常是编译目标文件 所需要的其他文件。 – 一系列命今(command),是make执行的动作,通常是把指定的相 关文件编译成目标文件的编译命令,每个命令占一行,且每个命 令行的起始字符必须为TAB字符。  除非特别指定,否则make的工作目彔就是当前目彔。target是需要 创建的二迚制文件或目标文件,depende

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档