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

M1 Mac编译llama.cpp失败,架构不匹配链接报错求助

M1 Mac编译llama.cpp架构不兼容问题解决

错误原因

报错核心是ggml-metal-embed.o文件为x86_64架构,而M1 Mac需要arm64架构,导致链接阶段找不到对应架构的_ggml_metallib_end、_ggml_metallib_start符号。单纯修改主目录Makefile的编译参数没用,因为这个文件的编译规则属于ggml子模块,未被同步修改。

解决步骤

1. 清理残留编译产物

先彻底清除之前生成的x86_64架构文件,避免干扰:

make clean
cd ggml && make clean && cd ..

2. 指定arm64架构编译

推荐直接通过命令行传递架构参数,无需手动修改Makefile:

# 基础编译
make ARCH=arm64
# 启用Metal加速(M1 Mac推荐)
make ARCH=arm64 METAL=1

如果偏好手动修改Makefile,需同时修改两处:

  • 主目录Makefile:确保ARCH=arm64,或在MK_CFLAGS、MK_CXXFLAGS中保留-arch arm64
  • ggml/src/Makefile:找到编译ggml-metal-embed.o的规则,添加-arch arm64参数:
    ggml-metal-embed.o: ggml-metal.metal
    	@echo "Compiling metal kernel..."
    	xcrun -sdk macosx metal -arch arm64 -c $< -o $@
    

3. 验证编译结果

编译完成后,检查生成的二进制架构是否正确:

lipo -info llama-baby-llama

正常输出应为:Non-fat file: llama-baby-llama is architecture: arm64

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 06:53:20