从 x_64 为 ARM 交叉编译铬时出错

时间:2020-12-29 15:56:19

标签: linux arm chromium

我正在尝试按照以下说明从源代码构建铬 https://chromium.googlesource.com/chromium/src/+/master/docs/linux/build_instructions.md

我已经成功地为 amd 设备构建和测试了 Chrome,现在我正在尝试为 arm 设备交叉编译它,但是当我设置标志时

<块引用>

target_cpu = "手臂" 使用 gn gen out/Debug --args='target_cpu="arm"' 我收到以下错误

ERROR at //build/config/linux/atk/BUILD.gn:13:1 (//build/toolchain/linux:clang_x86_v8_arm): Assertion failed.
assert(current_toolchain == default_toolchain)
^-----
See //ui/accessibility/BUILD.gn:294:20: which caused the file to be included.
      configs += [ "//build/config/linux/atk" ]

任何线索将不胜感激

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,我尝试在我的 Linux x64 服务器上为基于 ARM 的设备构建铬,我能够通过注释 assert 函数(作为函数assert 通常用于根据我的理解进行完整性检查)。您可以通过修改文件 build/config/linux/atk/BUILD.gn 并在以下代码中添加 # 来实现这一点assert(current_toolchain == default_toolchain )

我遵循了 Asesh 建议的网页上的指导(遵循了方法 2),但我们面临的问题是设置了不同的 current_toolchain 和 default_toolchain,这会导致 assert() 失败,网页上给出的说明似乎与问题无关。(https://chromium.googlesource.com/chromium/src/+/master/docs/linux/chromium_arm.md)

为了解释我为什么注释掉 assert() 代码,阅读 https://www.chromium.org/developers/gn-build-configuration 我发现了以下部分:Snip of section "Overriding the CPU architecture"

由于我们都在配置 target_cpu="arm",这应该足以为我们的 ARM 设备配置和构建 Chrome(这会导致 current_toolchain 设置为一个不同的工具链然后 default_toolchain,因此为什么 assert() 给我们这个错误)。

在注释掉 assert() 之后,我成功地运行了 gn gen out/xxxgn args out/xxx 并运行了 autoninja > 构建铬。