用于 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
替换为 soft
:arm_float_abi = "soft"
。
根据 gcc documentation,softfp
保持软 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++ 编译成功。
我在为 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
替换为 soft
:arm_float_abi = "soft"
。
根据 gcc documentation,softfp
保持软 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++ 编译成功。