GNU make 中的库成员目标与规则详解

需积分: 4 15 下载量 63 浏览量 更新于2024-08-09 收藏 978KB PDF 举报
"这篇文档是关于GNUmakefile的使用指南,特别是如何将库成员作为目标进行编译和管理。文章提到了在makefile中处理静态库的规则,以及如何通过`ARCHIVE(MEMBER)`的形式来指定库成员。文档强调了这种语法只能用于规则的目标和依赖,而不适用于命令行,因为大多数命令不支持直接对库成员的操作。通过示例展示了如何使用`ar`命令创建和更新库。此外,文档还介绍了使用shell通配符来指定多个库成员,以及如何处理库的所有成员。文档出自2004年9月11日的GNUmake中文手册,由徐海兵翻译整理,涵盖了makefile的多个核心概念,包括规则、变量、自动推导、条件语句、目录搜索等。" 在GNUmakefile中,库成员可以被独立地作为规则的目标进行处理。比如,一个静态库通常由多个`.o`文件组成,这些文件被称为库的成员。当你需要将某个`.o`文件加入到库中时,可以使用`ARCHIVE(MEMBER)`的格式。例如,创建名为`foolib`的库并添加`hack.o`成员的规则如下: ```make foolib(hack.o) : hack.o ar cr foolib hack.o ``` 这条规则首先创建了`hack.o`,然后使用`ar`命令将其添加到`foolib`库中。值得注意的是,`ar`命令通常用于管理和操作静态库,它的具体用法可以查看man手册。如果需要一次性添加多个成员,可以在括号中列出,如`foolib(hack.o kludge.o)`,这相当于执行两个单独的规则。 此外,使用shell通配符可以方便地处理库中的多个成员。例如,`foolib(*.o)`表示库`foolib`中的所有`.o`成员。这种通配符的使用方式在4.4节中有所介绍,包括其优点和可能存在的问题,并提到了`wildcard`函数,它用于获取当前目录下匹配通配符的文件名列表。 文档还涵盖了makefile的基本结构和规则,如Makefile的组成部分、变量的设定、自动规则推导、清除工作目录的规则等。通过示例和详细的解释,帮助读者理解如何编写和使用makefile来组织和自动化编译过程。在3.9节中,讨论了make解析makefile的机制,包括变量的求值、条件语句的处理以及规则的定义。此外,还讲解了如何处理目录搜索、隐含规则、多目标和静态模式规则等高级特性。整个文档旨在为读者提供一个全面的GNUmakefile使用指南。