源码编译安装是什么
官方没提供 rpm 或 deb 包,或者需要自定义编译参数时,走源码编译:./configure 检测环境并生成 Makefile,make 编译,make install 安装到指定前缀。前提是本机有开发工具链和对应开发库。CMake 项目流程同理,只是改用 cmake -S . -B build 生成构建目录。适用于所有 Linux 发行版。
基本信息
| 适用平台 | 全 Linux 发行版(RPM 系 dnf,DEB 系 apt) |
|---|---|
| 三步流程 | ./configure → make → make install |
| 依赖 | Development Tools 组 + 对应 -devel / -dev 开发库 |
| 隔离习惯 | --prefix=/usr/local/<应用名> |
| 卸载方式 | make uninstall(不一定提供)或手工删前缀目录 |
典型使用场景
- 发行版仓库缺少目标软件或版本过旧,需要较新特性
- 需要开启特定编译选项,如自定义 OpenSSL 路径或启用某模块
- 内核模块与第三方驱动必须按当前内核版本编译
- 内部自研程序交付到目标机本地编译
- 排障对照:官方包行为异常时用源码版本验证
编译安装示例
编译安装示例
dnf group install -y 'Development Tools' # 装工具链,DEB 系用 build-essential
dnf install -y openssl-devel zlib-devel # 按 configure 报错补开发库
tar xf app-1.0.tar.gz && cd app-1.0
./configure --prefix=/usr/local/app # 检测环境并生成 Makefile
make -j$(nproc) # 并行编译
sudo make install # 安装到前缀目录
echo /usr/local/app/lib > /etc/ld.so.conf.d/app.conf && ldconfig # 登记库路径
/usr/local/app/bin/app --version # 验证安装结果configure 报错怎么读
| 报错关键字 | 含义 | 处理 |
|---|---|---|
| cannot create executables | 工具链缺失或不完整 | 补装 gcc、make、binutils |
| xxx.h: No such file | 缺头文件 | 装对应 -devel / -dev 开发包 |
| cannot find -lxxx | 缺库文件 | 装库的开发包或指定 LDFLAGS |
| configure: error | 检测阶段失败 | 看 config.log 里最后一段关键错误 |
make install 不写包管理数据库,卸载、升级与漏洞扫描都没有记录;生产优先用官方包,确需编译的要把版本、路径与参数登记进交付文档。
编译慢时用 make -j$(nproc) 并行,但部分老项目并行会因依赖顺序报错,此时退回单线程 make 反而更快。
动手前检查清单
- 确认目标软件是否有官方包,有就优先用包管理安装
- 记录本次编译的版本号、来源地址与全部编译参数
- 核对 gcc 与 glibc 版本是否满足该软件的最低要求
- 预留安装前缀目录并纳入备份与监控范围
- 确认机器有足够内存,并行编译在内存不足时会被内核杀掉
CMake 项目流程不同:先 cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/usr/local/app 生成构建目录,再 cmake --build build -j8 编译,最后 cmake --install build 安装。