跳到主要内容

开发指南

安装前置要求:

  • 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芯片)

安装前置要求:

  • CMakebrew install cmake

然后配置并构建项目:

cmake -B build
cmake --build build

最后运行Ollama:

go run . serve

Windows

安装前置要求:

然后配置并构建项目:

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 rungo build即可。

Linux

安装前置要求:

  • CMakesudo apt install cmakesudo 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将在没有任何加速库的情况下运行。

优云智算