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 环境准备的可视化流程
为了方便你理解整个依赖关系,我画了张图。它把系统、硬件、工具和最终目标串起来了。
2.5 一些你可能会踩的坑
-
系统没装
build-essential: 很多新手以为装了 gcc 就行。其实没这个包,make和链接器都缺。记得一起装好。 -
cmake 版本太老: 我记得有一次用 cmake 3.16 去编,结果卡在
FetchContent模块上,折腾了半小时。后来老老实实升到 3.22,一次过。 -
磁盘空间不足: 编译过程中会产生大量临时文件,加上下载的模型,30GB 很快就没了。我曾经在只有 15GB 的云服务器上编译,死活通不过,最后发现是
/tmp爆了。
📌 核心要点: 环境搭建的目标不是“能装就行”,而是“一次装对,之后省心”。建议你直接用 Ubuntu 22.04 并执行上面的一键脚本,这样我后续的教程你才能无痛跟下来。