用于 ARM gn 构建问题的 Chromium 版本 53

Chromium version 53 for ARM gn build issue

我在为 ARM 平台构建 Chromium 时遇到问题。以下是有关我的主机服务器的一些详细信息:

Linux 版本 4.2.0-42-generic (buildd@lgw01-55) (gcc 版本 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) )

并且我使用 Chromium 版本 53.0.2785.143。我尝试使用 gn 构建铬,这是我在 args.gn 文件中的参数:

target_cpu = "arm"
arm_tune = "generic-armv7-a"
arm_float_abi = "softfp"

基本上,由于我的 ARM 平台,我使用了上面的这些特定参数。并且 gn 命令 运行 没有错误。但是,在使用 ninja 构建项目时,弹出以下错误:

ninja: Entering directory `out/Default_arm64' [1/1] Regenerating ninja files [296/46119] LINK ./minidump-2-core FAILED: minidump-2-core ../../third_party/llvm-build/Release+Asserts/bin/clang++ -Wl,--fatal-warnings -fPIC -Wl,-z,noexecstack -Wl,-z,now -Wl,-z,relro -Wl,-z,defs -fuse-ld=gold -B../../third_party/binutils/Linux_x64/Release/bin -Wl,--icf=all -pthread --target=arm-linux-gnueabihf --sysroot=../../build/linux/debian_wheezy_arm-sysroot -L/home/miaozixiong/workspace/chromium/src/build/linux/debian_wheezy_arm-sysroot/lib/arm-linux-gnueabihf -Wl,-rpath-link=/home/miaozixiong/workspace/chromium/src/build/linux/debian_wheezy_arm-sysroot/lib/arm-linux-gnueabihf -L/home/miaozixiong/workspace/chromium/src/build/linux/debian_wheezy_arm-sysroot/usr/lib/arm-linux-gnueabihf -Wl,-rpath-link=/home/miaozixiong/workspace/chromium/src/build/linux/debian_wheezy_arm-sysroot/usr/lib/arm-linux-gnueabihf -Wl,-rpath-link=../Default_arm64 -Wl,--disable-new-dtags -o "./minidump-2-core" -Wl,--start-group @"./minidump-2-core.rsp" -Wl,--end-group -ldl -lrt ld.gold: error: obj/breakpad/minidump-2-core/minidump-2-core.o uses VFP register arguments, output does not

...

我是 chromium 的新手,不知道这些错误是什么意思。所以有人知道如何解决吗?你很感激。

注意:根据我的 ARM 平台,我需要 arm_float_abi 属性为 "softfp"。所以请注意,我无法将其更改为 "hard"。此外,当设置 float abi = "hard" 时,没有构建错误。

ld.gold: error: obj/breakpad/minidump-2-core/minidump-2-core.o uses VFP register arguments, output does not

这是一个链接错误,表示 minidump-2-core 无法链接,原因是浮点 ABI 不匹配:对象 minidump-2-core.o 是为硬浮点编译的(生成的代码利用ARM VFP unit - "uses VFP register arguments"),但要求目标可执行文件使用软浮点数(其中模拟浮点支持,而不是使用专门的 FP 硬件指令)。

根据这个 bug report,Chromium 应该可以很好地构建软浮动。

我最好的猜测是,尝试将 softfp 替换为 softarm_float_abi = "soft"。 根据 gcc documentationsoftfp 保持软 ABI 但仍然 'allows the generation of code using hardware floating-point instructions',这可能会导致所见错误。

如果这不起作用,您可能需要查看有关为 ARM 交叉构建 Chromium 的教程:
https://unix.stackexchange.com/questions/176794/how-do-i-cross-compile-chromium-for-arm

这个问题我贴出来了,终于解决了。我在 ARM 平台上使用我的本地工具链并使用 g++ 编译成功。