Linux基础教程:makefile和make规则

现讲述Linux认证考试中涉及到的makefile和make规则:

首先介绍make实用程序的语法和常用选项,然后细剖makefile文件的组成。

make命令

make [选项] [目标] [宏定义]

通过命令行参数中的target,可指定make要编译的目标,并且允许同时定义编译多个目标,操作时按照从左向右的顺序依次编译target选项中指定的目标文件。如果命令行中没有指定目标,则系统默认target指向描述文件中第一个目标文件。

-d 显示调试信息

-n 不运行任何makefile文件,只打印需要执行的命令

-p 输出所有宏定义和目标文件描述

-s 静止状态下运行,不显示任何命令行信息

-f file 通知make程序从file中读取内部依赖说明,缺省情况下会读取makefile或者Makefile文件处理,文件名-表示读取标准输入,在Linux中,GNU make工具在当前工作目录中按照GNUmakefile、makefile、Makefile的顺序搜索makefile文件

注意:在源文件没有被修改的情况下,运行make命令会生成一条消息,说源文件的可执行文件是最新的,不需要用make命令重新编译和链接。要强制再创建可执行代码,需要改变源文件的上次更新时间,可以使用touch命令,然后再次运行make命令。

touch [选项] 文件或目录

-r 文件或目录 把指定文件或目录的日期时间,设成和参考文件或目录的日期时间相同

-d 日期时间 使用指定的日期时间,而非现在的时间

makefile规则

make程序基于文件之间的依赖性,需要建立的目标文件,以及建立目标文件时要执行的命令,以上所有被称为规则,存放在文件makefile中。定制规则的语法如下:

目标列表 : 关联性列表

《TAB》命令列表

注意:

1.可以在关联性列表和命令列表中使用shell文件名模式匹配字符,例如?、*、[]等等。

2.如果目标的命令列表中某个命令前面带有@,那么当make程序执行时,该命令是不会有反应的,在程序运行完毕之后,所有前面带@的命令按照反序执行。可以通过执行make -n命令显示这些命令以供查看。

3.如果目标的命令列表中某个命令前面带有-,说明如果该命令执行有误,会跳过该命令并继续执行。

相关推荐