【发布时间】:2020-08-06 23:33:09
【问题描述】:
我正在尝试使用带有交叉编译工具链的 Bazel 交叉编译一个项目(TensorFlow C 库)。经过一番绝望(但那是另一回事),我终于设法让外部依赖项(例如 zlib 或 protobuf)的实际编译与我的工具链一起工作,但是,我现在得到 缺少依赖项声明对于生成此错误的已编译规则所包含的所有系统头文件(由交叉编译工具链提供)。
Bazel's own tutorial for configuring C++ toolchains 中描述了这个确切的错误(在第 10 步的最底部)。他们还提出了一个修复方法,包括将feature 添加到CcToolchainConfigInfo,通过-isystem 标志添加系统头目录。
该修复程序的问题是我无法按照描述添加这些目录的绝对路径,因为这会触发此错误:包含路径...引用了执行根之外的路径。
除了使用绝对路径,我还尝试在我的 WORKSPACE 中声明 new local repositories 与 filegroups 和 cc_libraries 列出它们的 srcs/hdrs/includes 中的路径并引用那些filegroups/cc_libraries 在-isystem 标志中,但我的尝试都没有奏效。也许我做得不对,但我尝试了很多变化。
如果我无法添加绝对路径或让它在本地存储库中运行,那么正确的做法是什么?
【问题讨论】:
-
该工具链是从您的主机安装和访问的(在这种情况下,绝对路径实际上是合适的)还是您项目的外部依赖项?
-
它已安装并从我的主机访问。
标签: c++ tensorflow cross-compiling bazel toolchain