【问题标题】:cross-compiling with non-gcc-like compiler使用非 gcc 类编译器进行交叉编译
【发布时间】:2017-06-12 16:24:05
【问题描述】:

(来自https://groups.google.com/d/msg/bazel-discuss/LQfL6c-6Wqg/uinZMCTYCgAJ

嗨--

是否可以使用 bazel 使用编译器标志与远程 gcc 不同的工具链进行交叉编译?

例如,bazel 似乎想要/需要使用 -MD -MF foo.d,但我拥有的工具链不支持这些标志,并且我不知道如何从编译调用中过滤这些标志.

我唯一能想到的就是将 CROSSTOOL 指向一些包装器脚本来处理所有参数。

--罗伯

【问题讨论】:

    标签: bazel


    【解决方案1】:

    理想情况下,CROSSTOOL 将封装所有工具链/平台特定标志,而 Bazel 不会硬编码任何特定于 gcc/linux 的标志。我们正在到达那里,尽管速度比预期慢得多(这是一个非常痛苦的过程)。

    所以您应该能够编写自己的交叉工具(或生成一个类似于bazel does it 的交叉工具),它不会发出 -MD -MF foo.d。由于我们正在迁移许多内部交叉工具,因此 Bazel 正在努力变得聪明,并将添加您的交叉工具缺少的功能。检查CppConfiguration.javaCppLinkActionConfigs.java 是否有这些“补丁”。

    关于包装脚本,这就是 bazel 一直在为 MSVC 构建做的事情,将类似 gcc 的命令行转换为 cl.exe 样式。我们正在慢慢从这些脚本中删除逻辑,因为 crosstool 更强大(例如 Bazel@head 现在根本不使用包装脚本进行链接)。

    【讨论】:

      猜你喜欢
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-05
      • 2017-10-09
      • 2013-05-10
      相关资源
      最近更新 更多