下面是对 Linux 中非常常用的源码编译三步命令:
./configuremakemake install 的详细讲解,适用于编译大多数从源码包安装的软件(如 .tar.gz):


🧱 一、背景:为什么要用这三个命令?

很多 Linux 软件提供的是源代码包(如 .tar.gz),需要我们手动编译生成可执行文件。而这三步命令正是:

命令作用
./configure配置编译参数和环境检测
make编译生成可执行文件或库
make install安装到系统指定目录(如 /usr/local/

⚙️ 二、详解每个命令的作用

1️⃣ ./configure —— 配置阶段

  • 作用:检查系统环境,生成适用于当前平台的 Makefile 文件(用于后续 make 编译)
  • 文件来源configure 脚本一般是 GNU Autotools 自动生成的
  • 常见参数
./configure --prefix=/usr/local/xxx --enable-xxx --disable-yyy
参数说明
--prefix指定安装路径,默认是 /usr/local
--enable-xxx启用某个模块或功能
--disable-xxx禁用某个模块或功能

💡 示例:

./configure --prefix=/opt/nginx --with-http_ssl_module

2️⃣ make —— 编译阶段

  • 作用:根据 Makefile 文件,把源码编译为目标文件(如 .o)、可执行文件或动态库
  • 底层工具:调用 GCC、g++ 等编译器
  • 原理
    • 会自动找出修改过的文件并只重新编译它们,提高效率

💡 示例输出:

gcc -o main.o -c main.c
gcc -o myapp main.o util.o

3️⃣ make install —— 安装阶段

  • 作用:把编译好的程序、库、配置文件等复制到目标路径(如 /usr/local/bin
  • 需要权限:通常需要 sudo 提权:
sudo make install
  • 安装内容可能包括
    • 程序可执行文件
    • 头文件 (.h)
    • 动态链接库 (.so)
    • 配置文件
    • man 手册页等

📦 三、完整流程示例

tar -zxvf nginx-1.20.2.tar.gz
cd nginx-1.20.2
./configure --prefix=/opt/nginx
make
sudo make install

🧹 四、相关命令

命令作用
make clean删除上次编译生成的中间文件(.o.out
make uninstall若 Makefile 提供该目标,可执行卸载操作
make -j4开启多线程并行编译,速度更快(如 -j4 表示使用4线程)

🛠️ 五、常见错误及解决办法

错误原因解决方式
configure: command not found缺少 autoconf 工具sudo apt install autoconf
No C compiler found系统未安装编译器安装 gccsudo apt install build-essential
Permission denied没有权限写入系统目录用 sudo

✅ 总结口诀:

./configure   # 配好环境
make          # 编译成品
make install  # 安装归位