Linux如何编译安装软件
- Linux
- 2025-06-20
- 3770
 Linux编译安装软件通常步骤:下载源代码压缩包,解压后进入目录,运行
 
 
./configure检查依赖并配置编译选项,执行
 make编译源码,最后用
 sudo make install安装到系统目录。
在 Linux 系统中编译安装软件是获取最新版本、启用特定功能或安装未打包程序的常用方法,虽然包管理器(如 apt、yum)更便捷,但编译安装能提供更高灵活性和控制权,以下是详细操作指南:
为什么需要编译安装?
- 获取最新版本:官方仓库的软件可能滞后,编译可安装最新版。
- 自定义功能:启用/禁用特定模块(如优化 GPU 支持)。
- 特殊需求:为特定硬件(如 ARM 架构)或系统定制软件。
- 无预编译包:某些小众或开发中软件仅提供源代码。
准备工作:安装编译工具链
编译前需确保系统具备基础开发环境:
# Debian/Ubuntu 系 sudo apt update sudo apt install build-essential cmake git libssl-dev # RHEL/CentOS 系 sudo yum groupinstall "Development Tools" sudo yum install cmake openssl-devel
- 关键组件:gcc(编译器)、make(构建工具)、autoconf(配置脚本)。
- 依赖库:软件通常需要额外库(如 libxml2-dev),具体参考软件文档。
编译安装详细步骤
步骤 1:获取源代码
-  方式 1:下载压缩包 
 从官网(如 Python.org)下载.tar.gz或.tar.xz文件。wget https://example.com/software-1.0.tar.gz 
-  方式 2:Git 克隆(推荐) 
 适合开发版或频繁更新:git clone https://github.com/username/project.git 
步骤 2:解压并进入目录
tar -xvf software-1.0.tar.gz cd software-1.0
步骤 3:配置编译选项
运行配置脚本生成 Makefile:
./configure --prefix=/usr/local # 指定安装路径
- 常用参数: 
  - --prefix=/path:自定义安装目录(默认为- /usr/local)。
- --enable-feature:启用特定功能。
- --disable-feature:禁用非必要模块。
 
- 依赖检查:若报错提示缺少库(如 No package 'libxxx' found),需安装对应开发包(如libxxx-dev)。
步骤 4:编译源代码
make -j$(nproc) # -j 后接线程数(推荐使用 CPU 核心数加速)
- 耗时警告:大型项目(如 GCC、Qt)可能耗时数十分钟。
- 错误处理:若编译失败,检查输出日志,通常因依赖缺失或代码不兼容。
步骤 5:安装到系统
sudo make install # 需 root 权限写入系统目录
- 文件会复制到 --prefix指定路径(如/usr/local/bin)。
安装后的关键配置
更新动态库缓存
若安装路径不在标准库目录(如 /usr/lib),需更新链接库:

sudo ldconfig
设置环境变量
若可执行文件不在 PATH 中,需手动添加:
# 临时生效 export PATH=/usr/local/software/bin:$PATH # 永久生效(添加到 ~/.bashrc 或 /etc/profile) echo 'export PATH=/usr/local/software/bin:$PATH' >> ~/.bashrc source ~/.bashrc
卸载编译安装的软件
警告:make install 不会记录安装文件,直接删除可能残留配置,推荐以下方法:
方法 1:使用 make uninstall(如果支持)
 
部分软件提供卸载规则:
sudo make uninstall
方法 2:安装时记录文件列表
编译前记录所有安装文件:
sudo make install | tee install.log
awk '/^Install:/ {print $2}' install.log > files.txt 
卸载时删除记录的文件:

sudo xargs rm -f < files.txt
方法 3:使用 checkinstall(推荐)
 
将编译安装转换为系统包(如 .deb/.rpm),方便管理:
# 安装 checkinstall sudo apt install checkinstall # Debian/Ubuntu sudo yum install checkinstall # RHEL/CentOS # 替换 make install sudo checkinstall
按提示生成包后,可通过包管理器卸载:
sudo dpkg -r software # Debian/Ubuntu sudo rpm -e software # RHEL/CentOS
注意事项与常见问题
-  依赖地狱: 
 缺失依赖时,错误信息可能模糊,查阅软件的INSTALL或README.md获取准确依赖列表。
-  版本冲突: 
 避免覆盖系统关键库(如openssl),优先使用--prefix安装到独立目录。
-  权限管理: 
 非必要不用root编译,建议用普通用户编译,仅sudo make install。 
-  调试编译错误: - 检查 config.log获取详细错误。
- 搜索错误代码 + 软件名(如 error: unknown type name ‘uint128_t’ openssl)。
 
- 检查 
编译 vs 包管理器
| 场景 | 推荐方式 | 
|---|---|
| 安装常用软件(如 Vim) | 包管理器( apt) | 
| 需要最新版/自定义功能 | 编译安装 | 
| 生产环境部署 | 优先使用包管理器 | 
最佳实践:
- 测试环境编译通过后再部署到生产。
- 用 checkinstall或容器化(Docker)隔离环境。
引用说明: 基于 Linux 基金会文档(Linux Foundation Documentation) 及 GNU 编译工具链官方手册(GCC Manual),结合社区实践(如 StackExchange)整理,关键工具参考:GNU Autotools、CMake、Checkinstall。
 
  
			 
			 
			 
			 
			 
			 
			 
			