简体   繁体   English

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

[英]How to run mediapipe with c++ on M1 mac

environment环境

Macbook air M1 2020. MacBook Air M1 2020。
Big Sur 11.3.1.大苏尔 11.3.1。

What I wanna do我想做的事

I want to succeed to run "mediapipe c++ hello_world" below.我想成功运行下面的“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

I tried the following tries and failed.我尝试了以下尝试并失败了。

try1尝试1

do

Just follow the guideline只需遵循指南
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.Install OpenCV and FFmpeg. 4.安装OpenCV和FFmpeg。 => I used option1. => 我使用了选项 1。

bug漏洞

In lesson 6, I faced a bug below.在第 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尝试2

"try1 bug" said that bazel tried to Download bazel-3.7.2-darwin-arm64 from github release. “try1 bug”表示 bazel 试图从 github 版本下载bazel-3.7.2-darwin-arm64
But, release version 3.7.2 don't have the type of darwin-arm64 .但是,发布版本 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
Fortunately, release version 4.1.0 have the type of darwin-arm64.幸运的是,发行版 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

Then I trid to Download bazel-4.1.0-darwin-arm64 .然后我尝试下载bazel-4.1.0-darwin-arm64

do

In root repository "mediapipe", fix ".bazelversion" file as following.在根存储库“mediapipe”中,修复“.bazelversion”文件,如下所示。

4.1.0

Then, retried lesson 6 and the download started.然后,重试第 6 课并开始下载。

bug漏洞

But the download didn't complete successfully: I got the other bug as below.但是下载没有成功完成:我得到了另一个错误,如下所示。

// 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 % 

Now situation现在的情况

Then I gave up temporarily and am questioning to you!那我就暂时放弃了,向你提问!

Could someone solve this problem??有人能解决这个问题吗??
Thanks in advance.提前致谢。

I successfully built the HelloWorld.cc fine.我成功地构建了 HelloWorld.cc。

I also managed to compile Android on M1 MAC.我还设法在 M1 MAC 上编译 Android。 Had some issues with NDK version and permissions but in the end it compiled and ran on my S8 Plus. NDK 版本和权限存在一些问题,但最终它在我的 S8 Plus 上编译并运行。

My setup我的设置

  • MacBook Pro (13-inch, M1, 2020) MacBook Pro(13 英寸,M1,2020 年)
  • macOS Big Sur 11.5.1 macOS 大苏尔 11.5.1
  • ndk version used: r20b (download manually and edit WORKSPACE path to ndk)使用的ndk版本:r20b(手动下载并编辑工作空间路径到ndk)

During first compile you will get a lot of permission error issues, go to and keep open during build > System Preferences > Security and Privacy > general.在第一次编译期间,您会遇到很多权限错误问题,go 在构建 > 系统偏好设置 > 安全和隐私 > 常规期间保持打开状态。

When an error pops up allow to continue and restart build.当弹出错误时,允许继续并重新启动构建。 Will take about 8-10 permissions before it builds.在构建之前将需要大约 8-10 个权限。

Below is the last bit of the build process.下面是构建过程的最后一点。

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 [!?]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM