使用过 unix 系设备开发,你可能使用过下面这几行命令来安装软件:
./configure
make
make install
我使用过很多次,但在刚开始使用 linux 的时候并不知道这几行命令的意思,只知道安装软件的时候在命令行输入这几行命令。
最近我在开发一个 unix 工具,所以想弄明白这个标准化安装命令背后的原理。不止 unix 用户对这几行命令很熟悉,如果要开发一款针对 homebrew、 linux 或者 bsd 包管理器的应用,这也是一个很重要的知识点。接下来让我们深入 unix 去搞清楚这几行命令的作用。
整个过程分为三步:
-
配置
configure 脚本负责在你使用的系统上准备好软件的构建环境。确保接下来的构建和安装过程所需要的依赖准备好,并且搞清楚使用这些依赖需要的东西。
unix 程序一般是用 c 语言写的,所以我们通常需要一个 c 编译器去构建它们。在这个例子中 configure 要做的就是确保系统中有 c 编译器,并确定它的名字和路径。 -
构建
当 configure 配置完毕后,可以使用 make 命令执行构建。这个过程会执行在 makefile 文件中定义的一系列任务将软件源代码编译成可执行文件。
你下载的源码包一般没有一个最终的 makefile 文件,一般是一个模版文件 makefile.in 文件,然后 configure 根据系统的参数生成一个定制化的 makefile 文件。 -
安装
现在软件已经被构建好并且可以执行,接下来要做的就是将可执行文件复制到最终的路径。make install 命令就是将可执行文件、第三方依赖包和文档复制到正确的路径。
这通常意味着,可执行文件被复制到某个 path 包含的路径,程序的调用文档被复制到某个 manpath 包含的路径,还有程序依赖的文件也会被存放在合适的路径。
因为安装这一步也是被定义在 makefile 中,所以程序安装的路径可以通过 configure 命令的参数指定,或者 configure 通过系统参数决定。
如果要将可执行文件安装在系统路径,执行这步需要赋予相应的权限,一般是通过 sudo。
发表评论