bazel如何添加本地头文件路径

新手编bazel构建的项目时踩的深坑

仅分享故障及解决之道,无更多干货

编译故障:absolute_path… 确保 /usr/x86_64-linux-gnu/include/…h都在…balah
原理:看对应的包模块,外部的llvm工具链默认包含的头文件路径分2类,一类llvm自身的,一类unix通用的(/usr/include、/usr/local/include),但我此时需要把 /usr/x86_64-linux-gnu/include 也添进去
耗时:半天,找可用的方法非常耗时、也不能简单的-I/usr/…或-hcopt=…,边试边看有限的报错信息、边查官方文档边查包源码
解决patch如下:

---------------------------- base/cvd/MODULE.bazel ----------------------------
index e79563ea..13699785 100644
@@ -35,6 +35,9 @@ git_override(
 llvm = use_extension("@toolchains_llvm//toolchain/extensions:llvm.bzl", "llvm")
 llvm.toolchain(
    llvm_version = "18.1.8",
+    cxx_builtin_include_directories = {
+        "linux-x86_64": [ "/usr/x86_64-linux-gnu/include" ]
+    }
 )
 
 use_repo(llvm, "llvm_toolchain")

总结

以上问题应该比较通用,可给大家苦恼时一些有用参考,解决无必要的消耗。
期间测试了使用bazel编译c/c++工具链教程,整体感受尚可,初阶的上手成本在这,更面向对象、更复杂、更灵活的编译系统,适合大项目使用。

### TensorFlow 中安装和配置 NPU 支持 要在 TensorFlow 中安装并配置 NPU 支持,通常涉及以下几个方面的工作: #### 1. 配置 Bazel 构建工具资源限制 为了优化构建过程中的内存使用情况,在运行 `bazel` 命令时可以设置本地 RAM 资源的上限。例如,通过参数 `--local_ram_resources=2048` 可以将可用 RAM 设置为 2GB[^1]。 ```bash cd tensorflow-2.6.5 bazel build --config=opt --local_ram_resources=2048 //tensorflow/tools/pip_package:build_pip_package ``` 此命令用于编译 TensorFlow 的 pip 包,并确保不会因内存不足而导致失败。 --- #### 2. 安装 FFmpeg 并集成到 NPU 开发环境中 对于基于 Atlas(华为昇腾系列)的开发环境,FFmpeg 是常用的支持库之一。可以通过自定义选项启用对 Ascend 加速的支持。以下是具体的配置步骤[^3]: ```bash ./configure \ --prefix=./ascend \ --enable-shared \ --extra-cflags="-I${ASCEND_HOME}/ascend-toolkit/latest/acllib/include" \ --extra-ldflags="-L${ASCEND_HOME}/ascend-toolkit/latest/acllib/lib64" \ --extra-libs="-lacl_dvpp_mpi -lascendcl" \ --enable-ascend \ && make -j4 && make install ``` 上述脚本会完成以下操作: - 将头文件路径指向 `${ASCEND_HOME}` 下的相关目录。 - 添加必要的链接器标志 (`-L`) 和动态库依赖项 (`-lacl_dvpp_mpi`, `-lascendcl`)。 - 启用针对 Ascend 系列硬件的功能模块。 --- #### 3. 移植内核支持 (可选) 如果目标设备需要特定的操作系统级驱动程序或固件更新,则可能还需要执行 BSP 板级移植以及 libcpu 库的部分适配工作[^2]。这一步骤主要适用于嵌入式场景下的深度定制化需求。 > **注意**: 此部分内容仅作为补充说明提供给开发者参考;大多数情况下,默认版本已经能够满足常规应用的要求。 --- #### 4. 编译带有 NPU 支持的 TensorFlow 版本 最后一步是重新编译 TensorFlow 源码,使其兼容所使用的 NPU 设备架构。具体方法如下所示: ```bash export TF_NEED_AICORE=1 export AICORE_PATH=/path/to/Ascend/toolkit/ bazel build --config=v2 --copt=-mavx2 --cxxopt=-D_GLIBCXX_USE_CXX11_ABI=0 ... //tensorflow/tools/pip_package:build_pip_package ``` 这里的关键变量解释如下: - `TF_NEED_AICORE`: 表明是否开启 AI Core 功能集。 - `AICORE_PATH`: 明确指定了 Huawei Ascend SDK 所处的位置。 完成后即可获得一个具备完整功能的新版 Python Wheel 文件供后续部署测试之用。 --- ### 总结 综上所述,完整的流程涵盖了从基础环境搭建到高级特性使能等多个环节。每一步都需要严格遵循官方文档指导来规避潜在风险点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值