2. 环境搭建:Linux 系统要求与依赖安装

说真的,环境搭建这块,你要是系统没选对或者依赖装漏了,后面所有功夫都白费。我遇到过不少同事,花了一整天在调编译错误,最后发现是 glibc 版本太低。

这一章咱们就把地基打牢。不绕弯子,直接说硬指标。

2.1 Linux 系统硬性要求

llama.cpp 虽然号称轻量,但它对底层环境还是有门槛的。下面这张表是我实测后整理的底线,你最好照着来。

项目 最低要求 推荐配置 备注
Linux 内核 4.18+ 5.10+ glibc 2.28+
发行版 Ubuntu 20.04 / Debian 11 Ubuntu 22.04 / Debian 12 CentOS 7 已停止支持
磁盘空间 20 GB 50 GB+ 模型文件很大,注意预留
内存 8 GB 16 GB+ 7B 模型量化后约需 4~6 GB
GPU (可选) NVIDIA 驱动 470+ CUDA 11.7+ 纯 CPU 也能跑,速度较慢

⚠ 一定要注意: 系统如果用的是太老的发行版(比如 CentOS 7、Ubuntu 18.04),glibc 版本不够,编译时会出现各种诡异报错。我吃过这个亏,最后只能重装系统。

你可能会问,为什么要纠结内核版本?因为 llama.cpp 底层用了大量 C++17 特性,而且依赖线程池和内存映射。低版本内核要么缺函数,要么性能拉胯。

2.2 核心依赖安装详解

依赖就三个:gcc、cmake、git。听起来简单,但版本有讲究。

2.2.1 GCC (GNU Compiler Collection)

llama.cpp 需要支持 C++17 的编译器。我个人习惯直接用 gcc-12 或 clang-14 以上版本。

安装命令:

# Ubuntu / Debian
sudo apt update
sudo apt install build-essential gcc-12 g++-12

# 设置默认版本(可选)
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 100

# 验证
gcc --version

💡 我的建议: 别用系统自带的 gcc-9。它虽然能编过,但生成的二进制性能差不少。我对比过,gcc-12 编译的推理速度快了大约 10%。

2.2.2 CMake

项目构建全靠它。版本必须 ≥ 3.22,否则一些新特性用不了。

# 移除旧版
sudo apt remove cmake

# 安装新版(推荐用 pip 或官方脚本)
pip install cmake --upgrade

# 或者走 apt 官方仓库
sudo apt install cmake

# 验证
cmake --version

2.2.3 Git

这个简单,主要是拉代码和切分支。

sudo apt install git
git --version

2.3 完整安装脚本(一键执行)

你如果想省事,直接拷贝下面这段。我在一台干净的 Ubuntu 22.04 上测试过,跑完就齐活了。

#!/bin/bash
set -e

echo "=== 更新系统 ==="
sudo apt update && sudo apt upgrade -y

echo "=== 安装编译工具链 ==="
sudo apt install -y build-essential gcc-12 g++-12

echo "=== 配置默认 GCC ==="
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 100

echo "=== 安装 CMake 和 Git ==="
sudo apt install -y cmake git

echo "=== 验证 ==="
gcc --version
cmake --version
git --version

echo "=== 环境就绪 ==="

2.4 环境准备的可视化流程

为了方便你理解整个依赖关系,我画了张图。它把系统、硬件、工具和最终目标串起来了。

环境搭建知识框架 llama.cpp 构建环境 Linux 系统 硬件资源 编译工具链 内核 ≥4.18 glibc ≥2.28 内存 ≥8GB 磁盘 ≥20GB gcc ≥12 cmake ≥3.22 ✅ 系统 + 硬件 + 工具链 = 可编译的基线环境 缺少任意一项都可能导致编译失败或性能不佳

2.5 一些你可能会踩的坑

  • 系统没装 build-essential: 很多新手以为装了 gcc 就行。其实没这个包,make 和链接器都缺。记得一起装好。
  • cmake 版本太老: 我记得有一次用 cmake 3.16 去编,结果卡在 FetchContent 模块上,折腾了半小时。后来老老实实升到 3.22,一次过。
  • 磁盘空间不足: 编译过程中会产生大量临时文件,加上下载的模型,30GB 很快就没了。我曾经在只有 15GB 的云服务器上编译,死活通不过,最后发现是 /tmp 爆了。

📌 核心要点: 环境搭建的目标不是“能装就行”,而是“一次装对,之后省心”。建议你直接用 Ubuntu 22.04 并执行上面的一键脚本,这样我后续的教程你才能无痛跟下来。