理解GNU make:静态库更新与 SSE4.2 命令集

需积分: 4 65 下载量 20 浏览量 更新于2024-08-09 收藏 4.21MB PDF 举报
"GNU make makefile 中文手册" 在GNU make中,静态库的更新涉及到对目标文件的操作,尤其是使用`ar`命令。静态库的更新是通过形如"A(M)"的目标来实现的,其中"A"代表库文件的名字,"M"是库文件中的成员。这种形式的目标表示规则的目标是静态库"A"的成员"М"。当make处理"A(M)"这样的目标时,它会查找满足"(M)"的隐含规则,并将其视为满足"A(M)"的目标。 特殊的模式规则使用目标模式"(%)",用于更新"A(M)",即将文件"M"添加到库"A"中。如果库文件"A"不存在,`ar`命令会创建它。例如,命令`make 'foo.a(bar.o)'`会先通过隐含规则生成"bar.o",然后将其加入到"foo.a"库中。在这个过程中,"bar.o"作为一个中间文件处理。 隐含规则链是make执行命令的关键,它可以将多个规则串联起来。在这个例子中,如果"bar.c"存在,make会执行以下命令: 1. `cc -c bar.c -o bar.o` 编译源文件生成目标文件 2. `ar r foo.a bar.o` 将"bar.o"添加到库"foo.a"中 3. `rm -f bar.o` 删除中间文件"bar.o" 自动化变量在这里也起到了作用,例如在规则命令行中,可以使用`$%`代替"bar.o"。自动化变量允许我们以一种抽象的方式编写规则,使得它们更加通用。 静态库中的成员名不包含目录信息,这意味着当我们用`nm`命令查看库成员时,只能看到成员本身的名称,而不知道它们创建时所在的目录。然而,在Makefile中,我们可以直接指定静态库的成员,即使成员位于不同的目录下,make会根据规则去寻找并添加这些成员。 关于GNU make的其他知识点,包括Makefile的基本结构、规则的定义、变量的使用、自动推导规则、目录搜索、隐含规则和库文件的处理等。Makefile可以包含多个文件,通过`include`指令进行包含,还可以通过`MAKEFILES`变量指定额外的Makefile。make解析Makefile时会考虑变量的取值、条件语句以及规则的定义顺序。 静态库的更新是通过Makefile中特定格式的目标和隐含规则实现的,这涉及到源文件的编译、静态库的创建或更新,以及自动化变量的运用。同时,make的整个工作流程包括变量赋值、规则匹配和执行,以及对目录和文件的搜索机制,这些都构成了构建和管理项目的关键部分。