llama.cpp笔记

自行编译llama.cpp的笔记。

cmake列出所有选项

在llama.cpp目录下:

1
cmake -B build -LH

H是human readable。这样就可以定制自己想要编译的内容了,比如不编译test。

只编译 llama-server

我只需要 llama-server,其他的 tool 都不感兴趣,那么 cmake 打开和关闭的选项如下:

1
2
3
4
5
6
7
8
9
10
11
12
cmake -B build \
-DGGML_CUDA=ON \
-DBUILD_TESTING=OFF \
-DGGML_CPU=ON \
-DGGML_CPU_REPACK=ON \
-DGGML_CUDA_GRAPHS=OFF \
-DLLAMA_ALL_WARNINGS=OFF \
-DLLAMA_BUILD_COMMON=ON \
-DLLAMA_BUILD_EXAMPLES=OFF \
-DLLAMA_BUILD_TESTS=OFF \
-DLLAMA_BUILD_TOOLS=ON \
-DLLAMA_CURL=OFF

因为有 Nvidia 显卡所以启用 CUDA,但是因为是单卡所以不需要 CUDA_GRAPHS。因为已经提前下载好模型,所以不需要运行时拉取模型的功能,禁用curl。而那四个LLAMA_BUILD_是测试过,如果 COMMON 和 TOOLS 设置成 OFF,cmake --build时会提示没有 llama-server 这个 target。虽然加速框架用的是CUDA,但是不得不启用 CPU,否则在加载模型的时候会报错 no CPU backend 无法加载。

配置好之后编译:

1
cmake --build build --config Release --target llama-server

多线程的话加个 -j 在后面就行。

exception specification incompatible error

(2025-10-30)如果 cmake configure 时候就报错 exception specification is incompatible with that of previous function "rsqrt",那么就是 CUDA 版本跟 GCC 版本不兼容的问题。比如 Archlinux 的 GCC 15 跟 CUDA 12 就会爆这个,但是更新到 CUDA 13 就好了。