原文:The magic behind configure, make, make install
只要在任何一种UNIX系统上做过开发,就可能使用这种神奇的魔法,从源码安装过软件,:
./configure
make
make install
使用了那么多次,但在最开始用Linux时,我确实不理解什么意思。只是知道,如果要安装软件,就要这样做。
近来,在构建了UNIX工具后,就想要弄清楚这个标准的安装过程,到底是什么意思。
一、所作所为
在这个过程中有三步:
1. 配置(configure)
configure脚本主要是为在特定的系统上,在构建软件之前,做准备工作。以确保后面的构建(build)和安装(install)过程所需要的依赖,都是可用的。并找出要使用这些依赖所需的前提。
UNIX程序基本上都是用C编写的,因此通常需要一个C编译器来构建。此时,configure脚本将确认,所在的操作系统中确实有C编译器,并确定如何调用以及从什么地方找到它。
2. 构建(build)
configure阶段完成后,就可以调用make来构建软件。make阶段会运行定义在Makefile中的一系列任务,从源代码构建最终的软件。
用户下载的tar包,通常不包含最终的Makefile文件。而是包含着一个Makefile.in的文件,configure脚本会生成一个针对特定操作系统的Makefile。
注:Makefile.in => Makefile
3. 安装(install)
构建完成后,就准备运行了。所生成文件,可以拷贝到它们的最终目的地了。make install命令会把构建好的程序,以及对应的库文件(libraries)和文档(documentation),拷贝到正确的位置。
这通常意味着,程序所生成的二进制文件会拷贝到PATH变量所指定的一个路径中,程序的手册页面会拷贝到MANPATH指定的路径中,其他所依赖的文件会安全的保存在合适的位置。
安装这一步也是定义在Makefile中的,程序的安装位置可以基于传递到configure脚本中的选项,或configure脚本在操作系统中发现的环境变量,来改变。
取决于程序要安装的位置,很可能需要提升权限,从而可以把文件拷贝到系统目录下。这个通常是用sudo来完成的。
二、从何而来
三、实例说明