开发
安装先决条件- Go
- C/C++ 编译器,例如 macOS 上的 Clang、TDM-GCC (Windows amd64) 或 llvm-mingw (Windows arm64),以及 Linux 上的 GCC/Clang。
[!NOTE] Ollama 包含使用 CGO 编译的原生代码。这些数据结构会不时发生变化,CGO 可能会同步失效,导致意外崩溃。你可以先运行 go clean -cache 来强制重新构建原生代码。
macOS (Apple Silicon)
macOS Apple Silicon 支持 Metal,它已内置于 Ollama 二进制文件中。无需额外步骤。macOS (Intel)
安装先决条件- CMake 或
brew install cmake
Windows
安装先决条件- CMake
- Visual Studio 2022,包含“使用 C++ 的桌面开发”工作负载
- (可选) AMD GPU 支持
- (可选) NVIDIA GPU 支持
- (可选) VULKAN GPU 支持
- VULKAN SDK - 适用于 AMD/Intel GPU
- (可选) MLX 引擎支持
为 Vulkan 构建需要 VULKAN_SDK 环境变量: PowerShellCMD
[!IMPORTANT] 为 ROCm 构建需要额外的标志 (flags)最后,运行 Ollama
Windows (ARM)
目前 Windows ARM 不支持额外的加速库。请勿使用 cmake,只需运行go run 或 go build。
Linux
安装先决条件- CMake 或
sudo apt install cmake或sudo dnf install cmake - (可选) AMD GPU 支持
- (可选) NVIDIA GPU 支持
- (可选) VULKAN GPU 支持
- VULKAN SDK - 适用于 AMD/Intel GPU
- 或通过包管理器安装:
sudo apt install vulkan-sdk(Ubuntu/Debian) 或sudo dnf install vulkan-sdk(Fedora/CentOS)
- (可选) MLX 引擎支持
- CUDA 13+ SDK
- cuDNN 9+
- OpenBLAS/LAPACK:
sudo apt install libopenblas-dev liblapack-dev liblapacke-dev(Ubuntu/Debian)
[!IMPORTANT] 在运行 CMake 之前,请确保先决条件已包含在 PATH 中。
然后,配置并构建项目
MLX 引擎 (可选)
MLX 引擎支持运行基于 safetensor 的模型。它需要通过 CMake 单独构建 MLX 和 MLX-C 共享库。在 MacOS 上,MLX 利用 Metal 库在 GPU 上运行;在 Windows 和 Linux 上,则通过 CUDA v13 在 NVIDIA GPU 上运行。macOS (Apple Silicon)
需要 Metal 工具链。请先安装 Xcode,然后
[!NOTE] 如果没有 Metal 工具链,cmake 将在禁用 Metal 的情况下静默完成。检查 cmake 输出是否包含 Setting MLX_BUILD_METAL=OFF,这表示缺少该工具链。
Windows / Linux (CUDA)
需要 CUDA 13+ 和 cuDNN 9+。本地 MLX 源码覆盖
要针对本地检出的 MLX 和/或 MLX-C 进行构建(对开发很有用),请在运行 CMake 之前设置环境变量Docker
ROCm
运行测试
要运行测试,请使用go test
注意:在极少数情况下,你可能需要修改使用 go1.24 中新 “synctest” 包的包。 如果你没有启用 “synctest” 包,本地修改将不会显示构建或测试失败(如果有的话),但 CI 会报错。 如果 CI 失败,你可以继续推送更改以观察 CI 构建是否通过,或者在本地启用 “synctest” 包以在推送前查看失败详情。 要启用 “synctest” 包进行测试,请运行以下命令:如果你希望为所有 go 命令启用 synctest,可以在 shell 配置(profile)中设置GOEXPERIMENT环境变量,或者使用:这将为所有 go 命令启用 “synctest” 包,而无需为所有 shell 会话进行设置。 生产构建不需要 synctest 包。
库检测
Ollama 在相对于ollama 可执行文件的以下路径中寻找加速库:
./lib/ollama(Windows)../lib/ollama(Linux).(macOS)build/lib/ollama(用于开发)

