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

Error while cross-compiling chromium for ARM from x_64

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

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

target_cpu = "arm" using gn gen out/Debug --args='target_cpu="arm"' I get the following error

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" ]

如有任何线索,我们将不胜感激

我遇到了同样的问题,我尝试在我的 Linux x64 服务器上为基于 ARM 的设备构建 Chromium,我能够通过评论 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 I found the following section: Snip of section "Overriding the CPU architecture"。

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

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

此问题已在 Chromium 中修复:

https://chromium-review.googlesource.com/c/chromium/src/+/3074662