开源llama.cpp Releases·原文 2026年9月13日

llama.cpp b10932修复Clang预编译头时间戳导致的缓存构建失败

ggml-org发布的llama.cpp b10932在cmake中让Clang预编译头不再记录源文件修改时间,解决从其他checkout恢复缓存头后构建报错的问题,同时照例提供多平台预编译包。

AI解读:这条更新解决的是一个CI和本地缓存场景里的具体毛病:Clang会把预编译头所依赖源文件的修改时间写进头文件本身,一旦时间对不上,它就直接拒绝使用这个头文件,构建随之失败。

问题通常出现在缓存复用的时候。从一个checkout恢复出来的预编译头带着原仓库的时间戳,换到另一个checkout上时间自然对不上,于是构建报错。改动让cmake在clang下不再把时间戳写进预编译头。

受影响的主要是用ccache缓存编译结果、又用Clang系编译器的人。补丁覆盖的范围包括被ccache当作MSVC、实际底层是clang的编译器,以及clang-cl和Intel LLVM驱动。

对普通用户来说,这次发布本身没有模型或推理能力上的变化,价值集中在构建稳定性。仓库同时照常放出macOS、Linux、Windows、Android等平台的预编译包,直接下载使用的人基本不受这个修复影响。

llama.cpp发布b10932版本,其中一项cmake改动是让Clang的预编译头不再记录源文件修改时间(PR #28816)。

改动说明指出,Clang会把预编译头所依赖源文件的修改时间存进头文件内部,一旦时间不一致,Clang就会拒绝使用该头文件。

当一个缓存的头文件从另一个checkout恢复时,它携带的是那个checkout的时间戳,因此在当前构建中会导致失败。

新选项覆盖的编译器范围,是ccache视为MSVC、但底层实为clang的那些编译器,以及clang-cl和Intel LLVM驱动。

该版本照例提供各平台预编译产物,包括macOS(arm64、x64)、iOS XCFramework、Linux(Ubuntu x64/arm64/s390x,含CPU、Vulkan、ROCm 10.0、OpenVINO 2026.3.1、SYCL FP32/FP16)、Android arm64、Windows(CPU、OpenCL Adreno、CUDA 12.4/13.3/13.4、Vulkan、OpenVINO、SYCL、ROCm 10.0)以及UI包。

macOS arm64的KleidiAI版本标注为DISABLED,openEuler相关产物同样标注为DISABLED。

被修复的缓存构建问题

根据b10932的发布说明,Clang将预编译头所依赖源文件的修改时间保存在头文件内部,并在这些时间不一致时拒绝使用该头文件。当一个缓存的头文件从另一个checkout恢复时,它带着那次checkout的时间戳,构建因此失败。

cmake的改动是在clang下不把时间戳写进预编译头,从而避免这类因时间戳不一致导致的构建失败。

  • PR编号:#28816
  • 问题触发条件:缓存恢复的预编译头携带原checkout的时间戳
  • 改动效果:clang下预编译头不再包含源文件修改时间

覆盖的编译器范围

发布说明写明,该选项覆盖ccache归类为MSVC、但底层实际是clang的编译器,此外还包括clang-cl和Intel LLVM驱动。

  • ccache视为MSVC的clang系编译器
  • clang-cl
  • Intel LLVM驱动

该版本提供的预编译产物

b10932照常附带多平台二进制包与UI包,便于不自行编译的用户直接下载。列表显示部分产物处于禁用状态。

  • macOS Apple Silicon (arm64);macOS Apple Silicon (arm64, 启用KleidiAI) 标注为DISABLED
  • macOS Intel (x64);iOS XCFramework
  • Linux:Ubuntu x64/arm64/s390x(CPU)、Vulkan(x64/arm64)、ROCm 10.0、OpenVINO 2026.3.1、SYCL FP32与FP16
  • Android arm64 (CPU)
  • Windows:x64/arm64 CPU、arm64 OpenCL Adreno、CUDA 12.4/13.3/13.4、Vulkan、OpenVINO 2026.3.1、SYCL、ROCm 10.0
  • openEuler产物标注为DISABLED;UI包单独提供

信息来源

llama.cpp Releases原始来源