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

Apple Silicon M2下MediaPipe手部追踪GPU版编译报Bad CPU type错误

Apple Silicon M2编译MediaPipe Android手部追踪GPU示例报错解决方案

问题场景

按照MediaPipe官方文档配置环境后,已成功运行hello world测试示例,但执行Android手部追踪GPU版的编译命令时失败:

bazel build -c opt --config=android_arm64 mediapipe/examples/android/src/java/com/google/mediapipe/apps/handtrackinggpu:handtrackinggpu

错误信息

ERROR: /private/var/tmp/_bazel_burak/b7cfac50f1c6080dd0242194e8dbaa69/external/org_tensorflow/tensorflow/lite/delegates/gpu/gl/kernels/BUILD:321:11: Compiling tensorflow/lite/delegates/gpu/gl/kernels/mean.cc failed: (Exit 1): clang failed: error executing command (from target @org_tensorflow//tensorflow/lite/delegates/gpu/gl/kernels:mean) external/androidndk/ndk/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang -gcc-toolchain external/androidndk/ndk/toolchains/aarch64-linux-android-4.9/prebuilt/darwin-x86_64 -target ... (remaining 54 arguments skipped)
Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
src/main/tools/process-wrapper-legacy.cc:80: "execvp(external/androidndk/ndk/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang, ...)": Bad CPU type in executable
Target //mediapipe/examples/android/src/java/com/google/mediapipe/apps/handtrackinggpu:handtrackinggpu failed to build
Use --verbose_failures to see the command lines of failed build steps.
INFO: Elapsed time: 15.290s, Critical Path: 11.95s
INFO: 274 processes: 140 internal, 134 darwin-sandbox.
FAILED: Build did NOT complete successfully

问题原因

这是Apple Silicon M2芯片架构导致的兼容性问题:Bazel默认拉取的是x86_64架构的Android NDK工具链,而M2基于arm64架构,直接执行x86版本的clang会触发"Bad CPU type in executable"错误。

解决步骤

1. 升级Bazel版本

确保使用支持Apple Silicon的Bazel稳定版(推荐5.0及以上版本),旧版本对arm64架构的NDK支持不完善。

2. 修改WORKSPACE指定arm64架构NDK

在MediaPipe的WORKSPACE文件中,找到下载Android NDK的http_archive块,替换为arm64架构的NDK包:

http_archive(
    name = "androidndk",
    urls = [
        "https://dl.google.com/android/repository/android-ndk-r25c-darwin-arm64.zip",
    ],
    sha256 = "a1a87a69a42b3c46e9c48e2430e4294b5c11c5e02c76e4562b5f645e3a7a9f0c", # 对应r25c arm64版本的sha256值
    build_file = "@//third_party:androidndk.BUILD",
)

3. 调整编译命令参数

在原编译命令中添加arm64架构配置和NDK API等级参数:

bazel build -c opt --config=android_arm64 --config=darwin_arm64 --android_ndk_api_level=29 mediapipe/examples/android/src/java/com/google/mediapipe/apps/handtrackinggpu:handtrackinggpu

4. (备选)使用Rosetta 2兼容模式

如果上述方法无效,右键终端应用→显示简介→勾选"使用Rosetta打开",重启终端后重新执行编译命令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 22:32:47