- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)