下面是对 Linux 中非常常用的源码编译三步命令:./configure
、make
、make 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 | 系统未安装编译器 | 安装 gcc :sudo apt install build-essential |
Permission denied | 没有权限写入系统目录 | 用 sudo |
✅ 总结口诀:
./configure # 配好环境
make # 编译成品
make install # 安装归位
发表回复