开发指南
安装前置要求:
- Go语言
- C/C++编译器,例如macOS上的Clang、Windows amd64的TDM-GCC或Windows arm64的llvm-mingw、Linux上的GCC/Clang
然后在仓库根目录下构建并运行Ollama:
go run . serve
macOS (Apple Silicon芯片)
macOS Apple Silicon支持Metal图形处理技术,该功能已内置在Ollama二进制文件中,无需额外步骤。
macOS (Intel芯片)
安装前置要求:
- CMake 或
brew install cmake
然后配置并构建项目:
cmake -B build
cmake --build build
最后运行Ollama:
go run . serve
Windows
安装前置要求:
- CMake
- Visual Studio 2022 包括本机桌面工作负载
- (可选)AMD GPU支持
- (可选)NVIDIA GPU支持
然后配置并构建项目:
cmake -B build
cmake --build build --config Release
重要提示: 为ROCm构建需要额外的标志:
cmake -B build -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
cmake --build build --config Release
最后运行Ollama:
go run . serve
Windows (ARM)
Windows ARM目前不支持额外的加速库。请不要使用cmake,直接使用go run或go build即可。
Linux
安装前置要求:
- CMake 或
sudo apt install cmake或sudo dnf install cmake - (可选)AMD GPU支持
- (可选)NVIDIA GPU支持
重要提示: 运行CMake之前,确保前置要求已添加到
PATH环境变量中。
然后配置并构建项目:
cmake -B build
cmake --build build
最后运行Ollama:
go run . serve
Docker
docker build .
ROCm
docker build --build-arg FLAVOR=rocm .
运行测试
使用go test运行测试:
go test ./...
注意: 在极少数情况下,您可能需要使用go1.24中新的"synctest"包来更改包。
如果您没有启用"synctest"包,您将不会在本地看到由于您的更改(如果有的话)导致的构建或测试失败,但CI(持续集成)会中断。
如果您在CI中看到失败,您可以继续推送更改以查看CI构建是否通过,或者您可以在本地启用"synctest"包以在推送之前查看失败。
要启用"synctest"包进行测试,请运行以下命令:
GOEXPERIMENT=synctest go test ./...如果您希望为所有go命令启用synctest,可以在shell配置文件中设置
GOEXPERIMENT环境变量,或使用:go env -w GOEXPERIMENT=synctest这将为所有go命令启用"synctest"包,而无需为所有shell会话设置它。
synctest包不是生产构建所必需的。
库检测
Ollama在相对于ollama可执行文件的以下路径中查找加速库:
./lib/ollama(Windows)../lib/ollama(Linux).(macOS)build/lib/ollama(用于开发)
如果找不到这些库,Ollama将在没有任何加速库的情况下运行。