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

时间:2017-07-14 07:36:03

标签: arm linker-errors chromium ninja

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

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来构建chrome,这是我在args.gn文件中的参数:

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

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

  

忍者:输入目录`out / Default_arm64'       [1/1]重新生成忍者文件       [296/46119]链接./minidump-2-core       失败: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链路= /家庭/ miaozixiong /工作区/铬/ SRC /建造/ LINUX / debian_wheezy_arm-SYSROOT / LIB /臂-Linux的gnueabihf   -L /家庭/ miaozixiong /工作区/铬/ SRC /建造/ LINUX / debian_wheezy_arm-SYSROOT / usr / lib中/臂-Linux的gnueabihf   -Wl,-rpath链路= /家庭/ miaozixiong /工作区/铬/ SRC /建造/ LINUX / debian_wheezy_arm-SYSROOT / usr / lib中/臂-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:错误:obj / breakpad / minidump-2-core / minidump-2-core.o使用VFP寄存器   参数,输出不

     

...

我是铬的新手,并不知道这些错误意味着什么。所以任何人都知道如何解决?非常感谢。

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

2 个答案:

答案 0 :(得分:0)

  

ld.gold:错误:obj / breakpad / minidump-2-core / minidump-2-core.o使用VFP寄存器参数,输出不

这是一个链接错误,表明WriteFile由于浮点ABI不匹配而无法链接:对象minidump-2-core是为硬浮点编译的(生成的代码利用了{ {3}} - "使用VFP寄存器参数"),但请求目标可执行文件使用软浮点数(其中模拟浮点支持,而不是使用专门的FP硬件指令)。

根据这个ARM VFP unit,Chromium应该用柔软的漂浮物建造得很好。

我最好的猜测是,尝试仅minidump-2-core.o替换softfpsoft。 根据{{​​3}},arm_float_abi = "soft"保持软ABI,但仍允许使用硬件浮点指令生成代码,这可能会导致出现错误。

如果这不起作用,您可能需要查看本教程中有关跨框架Chromium for ARM的内容:
bug report

答案 1 :(得分:0)

我发布了这个问题并最终解决了。我在ARM平台上使用了我的本地工具链,并使用g ++成功编译了它。