overview

当执行一个叫make all的命令时,make程序执行当前目录下Makefile文件里的“all”规则。这个规则通常调用编译器将源代码编译成二进制文件。

当执行make install命令时,make程序将前一步骤的二进制文件复制到其可访问的一个合适的地址。

当一个项目使用Autotools,通常的步骤是:

./configure
make
make install

configure

configure脚本通常负责为特定系统上构建软件做好准备。它确保构建所需的依赖存在、安装程序可用、找出使用那些依赖所需的任何东西。

Unix程序通常用C语言写的,我们通常需要C编译器去构建它们。在这种情况下,configure脚本将确定系统确实有个C编译器,并找出它的名称以及它的位置。

构建软件

configure完成后,我们可以调用make去构建软件。这会运行Makefile里定义的一系列任务从源代码去构建出已完成的程序。

下载的压缩包一般不包含已完成的Makefile,它一般会有个叫做Makefile.in的模板文件,以及configure脚本去创建系统特定的Makefile。

安装软件

在软件构建出来后,文件可以被复制到最终目的地。make install命令复制构建出来的程序、库、文档到正确的位置。

这通常意味着程序的二进制文件将复制到PATH里的目录,程序的manual页面将复制到MANPATH的一个目录,其他依赖的文件将安全地存储到合适的位置。

由于安装步骤也定义在Makefile里,软件安装的位置可以基于传递给configure脚本的options改变,或者基于configure脚本在系统里所发现的东西。

根据软件安装的位置,这一步骤可能需要提供相关的权限,比如sudo。

参考