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。