当前位置:首页 > Ubuntu > 正文

Ubuntu源码编译安装软件(手把手教你从零开始在Linux系统中编译安装开源程序)

在 Ubuntu 系统中,除了使用 apt、snap 等包管理器安装软件外,源码编译安装是一种更灵活、功能更全面的安装方式。尤其当你需要最新版本、自定义配置或官方仓库未收录的软件时,掌握Ubuntu源码编译安装技能就显得尤为重要。本教程将用通俗易懂的方式,带领 Linux 新手一步步完成从下载源码到成功运行软件的全过程。

Ubuntu源码编译安装软件(手把手教你从零开始在Linux系统中编译安装开源程序) Ubuntu源码编译安装 源码安装软件 Linux从源码安装 Ubuntu编译教程 第1张

为什么选择源码编译安装?

  • 获取最新版本(可能比仓库中的更新)
  • 自定义编译选项(如启用/禁用某些功能)
  • 优化性能(针对你的 CPU 架构进行编译)
  • 学习底层原理,提升 Linux 技能

准备工作:安装编译依赖

在开始之前,我们需要安装一些基础的编译工具和库。打开终端(Ctrl+Alt+T),执行以下命令:

sudo apt updatesudo apt install build-essential \                 autoconf \                 automake \                 libtool \                 pkg-config \                 git \                 wget \                 curl \                 checkinstall

其中 build-essential 包含了 gcc、g++、make 等核心编译工具,是Linux从源码安装的基础。

步骤一:下载源代码

大多数开源项目托管在 GitHub 或 GitLab 上。以安装 htop(一个增强版的 top 进程监控工具)为例:

# 克隆源码仓库git clone https://github.com/htop-dev/htop.git# 进入项目目录cd htop

步骤二:配置编译环境

许多项目使用 Autotools(configure 脚本)或 CMake 来生成 Makefile。先查看项目根目录是否有 READMEINSTALL 文件,里面通常有详细说明。

对于 htop,我们先运行 autogen.sh(如果存在)生成 configure 脚本:

# 如果项目提供 autogen.sh./autogen.sh# 然后运行 configure 脚本./configure --prefix=/usr/local

参数 --prefix=/usr/local 表示将软件安装到 /usr/local 目录下(这是用户自编译软件的标准位置)。你也可以改成其他路径,比如 --prefix=$HOME/myapps 安装到家目录。

步骤三:编译源码

配置完成后,使用 make 命令开始编译:

make -j$(nproc)

其中 -j$(nproc) 表示使用所有 CPU 核心并行编译,大幅加快速度。如果你的机器内存较小,可以改为 -j2-j4

步骤四:安装软件

编译成功后,使用以下命令安装:

sudo make install

此时,程序会被复制到 /usr/local/bin,你可以直接在终端输入 htop 启动它!

(可选)使用 checkinstall 创建 deb 包

为了便于卸载或在其他机器上部署,推荐使用 checkinstall 代替 make install。它会生成一个 .deb 包并注册到系统包管理器中:

sudo checkinstall

按照提示填写软件信息(如版本号、描述等),完成后会在当前目录生成一个 .deb 文件,可用 dpkg -i 安装,也可用 apt remove 软件名 卸载。

常见问题与解决

  • “configure: error: no acceptable C compiler found” → 未安装 build-essential,请回看“准备工作”
  • 缺少某个 .h 头文件 → 安装对应的 dev 包,例如 libssl-devzlib1g-dev
  • 编译失败 → 查看错误信息,通常是依赖缺失或版本不兼容

总结

通过本教程,你已经掌握了在 Ubuntu 系统中进行源码安装软件的核心流程:准备环境 → 下载源码 → 配置 → 编译 → 安装。虽然比 apt install 复杂一些,但这种方式赋予你更大的控制权和灵活性。随着经验积累,你会发现 Ubuntu编译教程 中的这些步骤其实非常通用,适用于绝大多数开源项目。

动手试试吧!从一个小工具开始,逐步构建你的 Linux 开发环境。