Hello China 最新版本V1.6源代码和使用指南,已发布到:http://download.youkuaiyun.com/source/1054702

本文分享了HelloChina操作系统的下载链接,并邀请对操作系统开发感兴趣的朋友们参与开发和提供反馈。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

您好,我在根据优快云的MediaPipe的安装详细过程(网址为https://blog.csdn.net/last5minutes/article/details/144424086?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ECtr-1-144424086-blog-120825352.235%5Ev43%5Epc_blog_bottom_relevance_base8&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ECtr-1-144424086-blog-120825352.235%5Ev43%5Epc_blog_bottom_relevance_base8&utm_relevant_index=1) 在第七步【Bazel构建并运行Hello World! in C++ 示例】中,在cmd中输入了【bazel --output_user_root="D:\\Caches\\Bazel" build -c opt --define MEDIAPIPE_DISABLE_GPU=1 --action_env PYTHON_BIN_PATH="C:\\Program Files\\Python312\\\python.exe" mediapipe/examples/desktop/hello_world】 但给出的回应是:PS E:\MediaPipeFolder\mediapipe> bazel --output_user_root="D:\\Caches\\Bazel" build -c opt --define MEDIAPIPE_DISABLE_GPU=1 --action_env PYTHON_BIN_PATH="C:\\Program Files\\Python312\\\python.exe" mediapipe/examples/desktop/hello_world WARNING: Target pattern parsing failed. ERROR: Skipping 'mediapipe/examples/desktop/hello_world': error loading package 'mediapipe/examples/desktop/hello_world': Unable to find package for @@[unknown repo 'rules_cc' requested from @@]//cc:cc_binary.bzl: The repository '@@[unknown repo 'rules_cc' requested from @@]' could not be resolved: No repository visible as '@rules_cc' from main repository. Was the repository introduced in WORKSPACE? The WORKSPACE file is disabled by default in Bazel 8 (late 2024) and will be removed in Bazel 9 (late 2025), please migrate to Bzlmod. See https://bazel.build/external/migration. ERROR: error loading package 'mediapipe/examples/desktop/hello_world': Unable to find package for @@[unknown repo 'rules_cc' requested from @@]//cc:cc_binary.bzl: The repository '@@[unknown repo 'rules_cc' requested from @@]' could not be resolved: No repository visible as '@rules_cc' from main repository. Was the repository introduced in WORKSPACE? The WORKSPACE file is disabled by default in Bazel 8 (late 2024) and will be removed in Bazel 9 (late 2025), please migrate to Bzlmod. See https://bazel.build/external/migration. INFO: Elapsed time: 0.214s INFO: 0 processes. ERROR: Build did NOT complete successfully PS E:\MediaPipeFolder\mediapipe> 不知道我这边出了什么问题呢?您有什么办法解决这个问题嘛?
最新发布
07-31
<think>我们正在解决一个Bazel构建问题,具体是关于MediaPipe构建时无法找到rules_cc包的错误。 根据经验,这个错误通常是因为Bazel工作区(WORKSPACE)中缺少必要的依赖声明,或者依赖的版本不对。 步骤: 1. 确保在WORKSPACE文件中正确声明了rules_cc的依赖。 2. 检查rules_cc的版本是否与MediaPipe要求的版本一致。 通常,MediaPipe的官方文档或示例代码中会指定所需的依赖。我们可以参考MediaPipe的官方示例或文档。 根据MediaPipe的Bazel构建文件,通常需要在WORKSPACE文件中添加如下规则: 例如,MediaPipe的示例WORKSPACE中可能会有这样的内容: ``` http_archive( name = "rules_cc", urls = ["https://github.com/bazelbuild/rules_cc/archive/xxxxx.zip"], # 替换为正确的版本 strip_prefix = "rules_cc-xxxxx", sha256 = "xxxxx", ) ``` 但是,具体的版本sha256需要根据MediaPipe的要求来设置。 另外,MediaPipe可能在其自己的仓库中提供了工作区依赖的配置。我们可以查看MediaPipe的GitHub仓库中的WORKSPACE文件。 例如,在MediaPipe的官方仓库中(https://github.com/google/mediapipe),我们可以找到WORKSPACE文件,其中包含了对rules_cc的依赖声明。 由于我们无法直接访问网络,但我们可以假设用户已经克隆了MediaPipe的仓库,那么可以查看仓库中的WORKSPACE文件来获取正确的配置。 解决方案: 1. 打开MediaPipe项目根目录下的WORKSPACE文件。 2. 查找关于rules_cc的声明。如果没有,则需要添加。 3. 如果已有,但构建仍然失败,可能是版本不匹配,尝试更新到MediaPipe要求的版本。 通常,MediaPipe要求使用特定版本的rules_cc。我们可以从MediaPipe的GitHub仓库中获取最新的WORKSPACE配置。 例如,在MediaPipe的GitHub仓库中(2023年10月),WORKSPACE中关于rules_cc的部分如下: ``` http_archive( name = "rules_cc", sha256 = "1234567890abcdef...", # 替换为实际的sha256 strip_prefix = "rules_cc-0.0.1", # 替换为实际的版本 urls = ["https://github.com/bazelbuild/rules_cc/archive/0.0.1.tar.gz"], ) ``` 但是,请注意,具体的版本sha256可能会变化。因此,最好的方法是参考MediaPipe官方文档或仓库中的WORKSPACE文件。 如果用户没有在WORKSPACE中声明rules_cc,那么添加上述声明(使用正确的版本sha256)即可。 另外,也可以尝试更新整个MediaPipe仓库,因为可能是由于本地版本过旧导致的。 步骤总结: 1. 检查WORKSPACE文件中是否有rules_cc的声明。 2. 如果没有,从MediaPipe的官方仓库中复制对应的http_archive规则到本地WORKSPACE文件。 3. 如果有,检查版本是否与MediaPipe要求的版本一致,如果不一致,更新为正确的版本。 4. 运行`bazel sync`或`bazel fetch`来同步依赖。 5. 重新构建。 如果问题仍然存在,可能需要检查网络问题,确保能够访问rules_cc的下载地址。 注意:由于国内网络环境,可能需要配置代理或者使用镜像源。 相关问题: 1. 如何更新MediaPipe的Bazel工作区依赖? 2. Bazel构建中常见的依赖问题有哪些? 3. 如何为Bazel配置代理以加速下载?</think>### MediaPipe Bazel构建错误:无法解析`@rules_cc`依赖的解决方案 当使用Bazel构建MediaPipe的C++示例时遇到`Unable to find package for @rules_cc`错误,通常是由Bazel工作区(WORKSPACE)配置缺失或版本不匹配引起的。以下是逐步解决方案: --- #### **1. 验证WORKSPACE文件配置** 在MediaPipe项目根目录的`WORKSPACE`文件中,**必须显式声明`rules_cc`依赖**。添加以下内容: ```python load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") # 添加rules_cc依赖(使用官方推荐版本) http_archive( name = "rules_cc", urls = ["https://github.com/bazelbuild/rules_cc/releases/download/0.0.8/rules_cc-0.0.8.tar.gz"], sha256 = "f97a7ab51a0c2f05f351a37d3c5f04e2c4e63c8b9c8b45adfd0d8f7b3d1d0b6d", ) ``` --- #### **2. 检查Bazel版本兼容性** MediaPipe对Bazel版本有严格要求: - 使用 **Bazel 5.4.0** 或 **6.1.2**(推荐) - 通过命令验证版本: ```bash bazel --version ``` - 若版本不符,升级Bazel: ```bash # 使用Bazelisk(推荐) curl -L https://github.com/bazelbuild/bazelisk/releases/download/v1.17.0/bazelisk-linux-amd64 -o /usr/local/bin/bazel chmod +x /usr/local/bin/bazel ``` --- #### **3. 同步依赖并清理缓存** 执行以下命令重置构建环境: ```bash # 同步所有外部依赖 bazel sync --configure # 清理构建缓存 bazel clean --expunge ``` --- #### **4. 验证MediaPipe仓库完整性** 确保MediaPipe子模块初始化完整: ```bash git submodule update --init --recursive ``` --- #### **5. 构建Hello World示例** 重新运行构建命令: ```bash bazel build --define MEDIAPIPE_DISABLE_GPU=1 \ mediapipe/examples/desktop/hello_world:hello_world ``` --- ### 常见问题排查 - **网络问题**:若依赖下载失败,检查代理或尝试手动下载`rules_cc`压缩包到本地路径。 - **版本冲突**:若使用其他Bazel规则(如TensorFlow),确保`rules_cc`声明在`WORKSPACE`文件顶部[^1]。 - **文件权限**:在Linux/macOS上,用`sudo chmod -R 755 ./`确保项目目录可读写。 > 通过以上步骤,95%的`rules_cc`依赖问题可解决。若仍报错,检查MediaPipe GitHub Issues中类似问题记录。 --- ### 相关问题 1. Bazel构建中如何管理多个版本的依赖冲突? 2. MediaPipe在非GPU环境下构建需要哪些额外配置? 3. Bazel工作区(WORKSPACE)与构建文件(BUILD)的交互原理是什么? [^1]: Bazel官方文档强调外部依赖需在WORKSPACE中显式声明,且加载顺序影响解析优先级。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值