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

MacBook M1 Pro上Bazel构建失败:无法链接protobuf求助

Bazel编译protoc触发段错误的排查方案

环境信息

➜  go version
go version go1.22.1 darwin/arm64
➜  protoc --version
libprotoc 26.1

原始错误信息

ERROR: /private/var/tmp/_bazel_anupam/6e9e2a4c19c72b35e7d629ca2e2fa985/external/com_google_protobuf/BUILD:480:10: 链接外部依赖@com_google_protobuf//:protoc工具失败:(退出码1) cc_wrapper.sh执行出错,命令来自目标@com_google_protobuf//:protoc:external/local_config_cc/cc_wrapper.sh @bazel-out/darwin_arm64-opt-exec-2B5CBBC6-ST-e846b08c7501/bin/external/com_google_protobuf/protoc-2.params

使用--sandbox_debug参数查看沙箱的详细日志,并保留沙箱构建根目录用于调试
clang: error: 无法执行命令:段错误:11

添加--sandbox_debug后的详细日志

external/zlib/zutil.c:315:20: 警告:无原型的函数定义在所有C版本中已被弃用,C2x版本不再支持 [-Wdeprecated-non-prototype]
void ZLIB_INTERNAL zcfree (opaque, ptr)
                   ^
生成了3条警告。
ERROR: /private/var/tmp/_bazel_anupam/6e9e2a4c19c72b35e7d629ca2e2fa985/external/com_google_protobuf/BUILD:480:10: 链接外部依赖@com_google_protobuf//:protoc工具失败:(退出码1) sandbox-exec执行出错:
  (cd /private/var/tmp/_bazel_anupam/6e9e2a4c19c72b35e7d629ca2e2fa985/sandbox/darwin-sandbox/1900/execroot/__main__ && \
  exec env - \
    PATH=/opt/homebrew/Cellar/pyenv-virtualenv/1.2.1/shims:/Users/anupam/.pyenv/shims:/opt/homebrew/opt/llvm/bin:/Library/Frameworks/Python.framework/Versions/3.11/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/usr/local/go/bin:/Users/anupam/.cargo/bin:/Users/anupam/.fzf/bin \
    PWD=/proc/self/cwd \
    TMPDIR=/var/folders/w9/s_jqrs9s1d1cq0y3jfh0jwbw0000gn/T/ \
  /usr/bin/sandbox-exec -f /private/var/tmp/_bazel_anupam/6e9e2a4c19c72b35e7d629ca2e2fa985/sandbox/darwin-sandbox/1900/sandbox.sb /var/tmp/_bazel_anupam/install/3d6628bc87ba9f6bdce44dfed9a168e8/process-wrapper '--timeout=0' '--kill_delay=15' '--stats=/private/var/tmp/_bazel_anupam/6e9e2a4c19c72b35e7d629ca2e2fa985/sandbox/darwin-sandbox/1900/stats.out' external/local_config_cc/cc_wrapper.sh @bazel-out/darwin_arm64-opt-exec-2B5CBBC6-ST-e846b08c7501/bin/external/com_google_protobuf/protoc-2.params)
clang: error: 无法执行命令:段错误:11
clang: error: 链接器命令因信号失败(使用-v查看调用详情)

排查解决方法

  • 禁用Bazel沙箱:编译时添加--spawn_strategy=local参数,绕过macOS的sandbox-exec限制,该组件有时会与clang链接器冲突引发段错误。
  • 切换到系统自带clang:从环境变量PATH中移除/opt/homebrew/opt/llvm/bin,让Bazel使用/usr/bin/clang,Homebrew版LLVM与Bazel的cc_wrapper存在兼容性问题。
  • 升级Bazel版本:旧版Bazel在arm64架构的macOS上处理外部依赖链接存在已知bug,升级到最新稳定版(如7.x系列)可修复此类问题。
  • 指定兼容的protobuf版本:在WORKSPACE文件中明确指定适配arm64 macOS的protobuf版本(如25.x或26.x的最新补丁版),避免默认拉取的版本存在编译缺陷。
  • 清理Bazel缓存:执行bazel clean --expunge清除所有缓存,重新拉取依赖编译,缓存损坏也可能导致链接阶段异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 19:04:57