https://thoughtbot.com/blog/the-magic-behind-configure-make-make-install
✨ 什么是 ./configure && make && make install
?
这是在类 Unix 系统中,从源码安装软件时的“三步走”流程,几乎是开源软件的标配流程。
🧩 第一步:./configure
—— 配置软件,生成 Makefile
这一步的作用是:
- 检查系统环境是否满足构建条件(比如有没有 C 编译器、依赖库等)
- 判断系统路径、特性、头文件是否存在
- 用模板文件
Makefile.in
生成适用于你本机的Makefile
📌 举个例子:
如果源码目录中有一个 configure.ac
文件,通过 autoconf
工具可以生成这个 configure
脚本。configure
脚本运行后会“根据你的系统量身定做一份 Makefile”。
🛠️ 第二步:make
—— 编译源码
make
会读取刚才configure
生成的Makefile
- 然后按照里面的规则一步步编译源代码(比如
.c
文件)生成最终的可执行程序(比如helloworld
) - 所以
make
的本质是“根据说明书,动手盖房子”
📌 小知识:源码压缩包通常只包含 Makefile.in
,需要 configure
先生成具体的 Makefile
才能执行。
📦 第三步:make install
—— 安装程序
- 把刚刚编译好的可执行文件、库、文档等复制到系统的合适位置
- 比如
/usr/local/bin
放可执行文件 /usr/local/share/man
放手册
- 比如
- 安装路径可以通过
./configure --prefix=/your/path
控制 - 有时需要
sudo
权限(因为要写入系统目录)
📌 小技巧:你可以用 DESTDIR
或 --prefix
控制安装到用户目录,比如 ~/.local/bin
🧙♂️ 这些脚本是哪里来的?
configure
脚本和Makefile.in
并不是开发者手写的(太复杂了)- 它们通常是通过一套叫 Autotools 的工具自动生成的,主要包括:
autoconf
: 读configure.ac
→ 生成configure
automake
: 读Makefile.am
→ 生成Makefile.in
所以维护者编写的是:
configure.ac
(描述配置过程)Makefile.am
(描述构建规则)
而最终用户看到的是:
configure
(可执行脚本)Makefile
(构建说明)
🔧 打包整个流程总结
开发者端:
aclocal # 设置 m4 环境
autoconf # 生成 configure 脚本
automake --add-missing # 生成 Makefile.in
用户端使用:
./configure # 检查系统,生成 Makefile
make # 编译源码
make install # 安装程序
🎁 总结一句话:
./configure && make && make install 是一种通用的开源软件安装规范流程,配置 → 编译 → 安装,背后是 Autotools 工具链的支撑。