You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在非编译目录中使用go-llama.cpp的C-Go绑定

解决go-llama.cpp绑定在外部目录编译时找不到common.h的问题

问题分析

在外部目录使用go-llama.cpp绑定时,编译报错找不到common.h,本质是Go的Cgo编译时无法正确定位go-llama.cpp的头文件和编译好的静态库路径。

解决方案

1. 配置Go模块的本地依赖替换

在你的project目录下的go.mod文件中添加以下替换指令,让Go指向本地的go-llama.cpp目录:

replace github.com/go-skynet/go-llama.cpp => ../go-llama.cpp

之后在Go代码中使用标准导入路径即可:

import "github.com/go-skynet/go-llama.cpp"

2. 运行/编译时正确设置环境变量

在project目录下执行命令时,需要将LIBRARY_PATH和C_INCLUDE_PATH指向go-llama.cpp的目录:

  • 使用相对路径(确保当前在project目录):
LIBRARY_PATH=$(pwd)/../go-llama.cpp C_INCLUDE_PATH=$(pwd)/../go-llama.cpp go run main.go
  • 更稳妥的绝对路径方式:
# 先获取go-llama.cpp的绝对路径
LLAMA_DIR=$(realpath ../go-llama.cpp)
LIBRARY_PATH=$LLAMA_DIR C_INCLUDE_PATH=$LLAMA_DIR go run main.go

3. 可选:全局设置环境变量(当前shell会话有效)

如果不想每次运行都输入环境变量,可以先把路径导出到当前shell:

export LLAMA_DIR=$(realpath ../go-llama.cpp)
export LIBRARY_PATH=$LLAMA_DIR
export C_INCLUDE_PATH=$LLAMA_DIR
# 之后直接运行即可
go run main.go

验证要点

  • 确认go-llama.cpp目录下已执行过make libbinding.a,且目录中存在common.h和libbinding.a文件
  • 确保环境变量指向的路径是go-llama.cpp的根目录,而非子目录

内容的提问来源于stack exchange,提问作者Ozymandias

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 08:12:28