电脑港
白蓝主题五 · 清爽阅读
首页  > 软件应用

configure命令是用来编译程序的吗?别被名字骗了

很多人第一次在 Linux 下ref="/tag/150/" style="color:#E3A3CF;font-weight:bold;">编译软件,看到 ./configure 就以为这是“开始编译”的命令——其实它压根不碰代码编译这事儿。

configure 是干啥的?

简单说,configure 是个“踩点+搭台”的脚本。它不编译,只检查你的系统:有没有需要的库(比如 OpenSSL、readline)、头文件在哪儿、编译器是 gcc 还是 clang、目标架构是 x86_64 还是 aarch64……然后根据这些信息,生成一份定制版的 Makefile

你可以把它想象成装修前的量房师傅:他不砌墙、不刷漆,但得记下门窗尺寸、水电接口位置,再把图纸交到工人手上。

真正的编译在哪一步?

configure 跑完,通常跟着就是:

make

这时候才真正调用 gcc/clang 把 C/C++ 源码一行行翻译成机器指令。而 make install 是把编译好的二进制文件、配置模板、文档等,按 configure 算出来的路径(比如 /usr/local/bin)拷过去。

举个真实例子

比如你下载了 nginx 源码包:

tar -xzf nginx-1.24.0.tar.gz
cd nginx-1.24.0
./configure --prefix=/opt/nginx --with-http_ssl_module
make
sudo make install

第一行解压,第二行进目录,第三行 ./configure 只是确认 openssl 库存在、决定安装到 /opt/nginx、并标记要启用 HTTPS 模块;第四行 make 才开始编译上万行 C 代码;最后一行才是安装。

如果你跳过 configure 直接 make,大概率报错:“fatal error: ngx_config.h: No such file or directory”——因为没生成头文件和 Makefile,编译根本无从下手。

顺带提一句

现在很多新项目用 CMake、Meson 或 Cargo(Rust)替代 autotools,它们也有类似 configure 的阶段(比如 cmake .meson setup builddir),但底层逻辑一样:先探测环境,再生成构建指令,最后才轮到编译。