如何在 M1 mac 上使用 C++ 运行 mediapipe

2024-01-01

环境

Macbook Air M1 2020。
大苏尔 11.3.1。

我想做什么

我想成功运行下面的“mediapipe c++ hello_world”。https://google.github.io/mediapipe/getting_started/install.html#installing-on-macos https://google.github.io/mediapipe/getting_started/install.html#installing-on-macos

我尝试了以下尝试但失败了。

try1

do

只需遵循指南即可
https://google.github.io/mediapipe/getting_started/install.html#installing-on-macos https://google.github.io/mediapipe/getting_started/install.html#installing-on-macos

  • 4.安装OpenCV和FFmpeg。 => 我使用了选项1。

bug

在第 6 课中,我遇到了以下错误。

// run lesson 6
mediapipe % bazel run --define MEDIAPIPE_DISABLE_GPU=1 \
    mediapipe/examples/desktop/hello_world:hello_world
2021/05/23 21:06:14 Downloading https://releases.bazel.build/3.7.2/release/bazel-3.7.2-darwin-arm64...
2021/05/23 21:06:16 could not download Bazel: HTTP GET https://releases.bazel.build/3.7.2/release/bazel-3.7.2-darwin-arm64 failed with error 404
mediapipe %

try2

“try1 bug”表示 bazel 尝试下载巴泽尔-3.7.2-darwin-arm64来自 github 发布。
But, 发布版本 3.7.2 没有 darwin-arm64 类型.
https://github.com/bazelbuild/bazel/releases/tag/3.7.2 https://github.com/bazelbuild/bazel/releases/tag/3.7.2
幸运的是,发布版本 4.1.0 的类型为 darwin-arm64。
https://github.com/bazelbuild/bazel/releases/tag/4.1.0 https://github.com/bazelbuild/bazel/releases/tag/4.1.0

然后我尝试下载bazel-4.1.0-darwin-arm64.

do

在根存储库“mediapipe”中,修复“.bazelversion”文件,如下所示。

4.1.0

然后,重试第 6 课并开始下载。

bug

但下载没有成功完成:我遇到了另一个错误,如下所示。

// run lesson 6 again
mediapipe % bazel run --define MEDIAPIPE_DISABLE_GPU=1 \
    mediapipe/examples/desktop/hello_world:hello_world

~~download process~~

ERROR: /Users/<some_mid_path>/mediapipe/mediapipe/framework/BUILD:971:11: Compiling mediapipe/framework/scheduler_queue.cc failed: (Aborted): wrapped_clang failed: error executing command external/local_config_cc/wrapped_clang '-D_FORTIFY_SOURCE=1' -fstack-protector -fcolor-diagnostics -Wall -Wthread-safety -Wself-assign -fno-omit-frame-pointer -O0 -DDEBUG '-std=c++11' ... (remaining 60 argument(s) skipped)

Use --sandbox_debug to see verbose messages from the sandbox
mediapipe/framework/scheduler_queue.cc:212:3: error: expected expression
  AUTORELEASEPOOL {
  ^
mediapipe/framework/scheduler_queue.cc:29:25: note: expanded from macro 'AUTORELEASEPOOL'
#define AUTORELEASEPOOL @autoreleasepool
                        ^
mediapipe/framework/scheduler_queue.cc:226:5: error: use of undeclared identifier 'is_idle'
    is_idle = IsIdle();
    ^
mediapipe/framework/scheduler_queue.cc:228:7: error: use of undeclared identifier 'is_idle'
  if (is_idle && idle_callback_) {
      ^
3 errors generated.
Error in child process '/usr/bin/xcrun'. 1
Target //mediapipe/examples/desktop/hello_world:hello_world failed to build
Use --verbose_failures to see the command lines of failed build steps.
INFO: Elapsed time: 1.430s, Critical Path: 1.26s
INFO: 4 processes: 3 internal, 1 darwin-sandbox.
FAILED: Build did NOT complete successfully
FAILED: Build did NOT complete successfully

mediapipe % 

现在的情况

那我就暂时放弃了,向你提问!

有人可以解决这个问题吗?
提前致谢。


我成功地构建了HelloWorld.cc。

我还成功地在 M1 MAC 上编译了 Android。 NDK 版本和权限存在一些问题,但最终它在我的 S8 Plus 上编译并运行。

My setup

  • MacBook Pro(13 英寸,M1,2020 年)
  • macOS 大苏尔 11.5.1
  • 使用的 ndk 版本:r20b(手动下载并编辑 NDK 的 WORKSPACE 路径)

在第一次编译期间,您会遇到很多权限错误问题,请转到并在构建期间保持打开状态>系统偏好设置>安全和隐私>常规。

当弹出错误时允许继续并重新启动构建。在构建之前需要大约 8-10 个权限。

下面是构建过程的最后一部分。

Warning: skipping import of repository 
'build_bazel_apple_support' because it already exists.

DEBUG: /private/var/tmp/_bazel_jeranio/794c1b4078a0aeb97ae7a379447a99a6/external/org_tensorflow/third_party/repo.bzl:108:14: 
Warning: skipping import of repository 'bazel_skylib' because it already exists.

DEBUG: /private/var/tmp/_bazel_jeranio/794c1b4078a0aeb97ae7a379447a99a6/external/org_tensorflow/third_party/repo.bzl:108:14: 
Warning: skipping import of repository 'pybind11' because it already exists.

DEBUG: /private/var/tmp/_bazel_jeranio/794c1b4078a0aeb97ae7a379447a99a6/external/tf_runtime/third_party/cuda/dependencies.bzl:51:10: The following command will download NVIDIA proprietary software. By using the software you agree to comply with the terms of the license agreement that accompanies the software. If you do not agree to the terms of the license agreement, do not use the software.

INFO: Analyzed target //mediapipe/examples/android/src/java/com/google/mediapipe/apps/handtrackinggpu:handtrackinggpu (0 packages loaded, 0 targets configured).
INFO: Found 1 target...

Target //mediapipe/examples/android/src/java/com/google/mediapipe/apps/handtrackinggpu:handtrackinggpu up-to-date:
  bazel-bin/mediapipe/examples/android/src/java/com/google/mediapipe/apps/handtrackinggpu/handtrackinggpu_deploy.jar
  bazel-bin/mediapipe/examples/android/src/java/com/google/mediapipe/apps/handtrackinggpu/handtrackinggpu_unsigned.apk
  bazel-bin/mediapipe/examples/android/src/java/com/google/mediapipe/apps/handtrackinggpu/handtrackinggpu.apk
INFO: Elapsed time: 2.984s, Critical Path: 0.97s
INFO: 1 process: 1 internal.
INFO: Build completed successfully, 1 total action

jeranio at Jerrys-MacBook-Pro in ~/mediapipe on master [!?]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 M1 mac 上使用 C++ 运行 mediapipe 的相关文章

随机推荐