2017-07-14 131 views
0

我在为ARM平台构建铬时遇到了问题。以下是有关我的主机服务器的一些细节:适用于ARM gn版本53的Chromium版本号

Linux版本的4.2.0-42泛型(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: 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

...

我是新来的铬,没有什么做的那些错误的意思的线索。那么有人知道如何解决?你很感激。

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

回答

0

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

0

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的 - “使用VFP寄存器参数“),但是目标可执行文件被要求使用软浮点(其中模拟浮点支持,而不是使用专门的FP硬件指令)。

根据这bug report,铬应建立罚款与软浮动。

我最好的猜测是,尝试用soft代替softfparm_float_abi = "soft"。 根据gcc documentation,softfp维持软ABI但仍'允许使用硬件浮点指令生成代码,这可能导致看到的错误。

如果这是行不通的,你可能要检查交叉建筑物铬本教程ARM:
https://unix.stackexchange.com/questions/176794/how-do-i-cross-compile-chromium-for-arm

+0

你好@valiano。谢谢您的回复。我尝试了arm_float_abi =“soft”选项并得到相同的错误。另外,我阅读你之前提到的教程。不幸的是,我猜这个教程主要关注“硬”浮动方式。我对linux手臂交叉工具链很陌生,如果我错了,请纠正我。 – tonymiao

+0

@tonymiao我看...在工具链方面,您可能想要安装: 'sudo apt-get install gcc-arm-linux-gnueabi g ++ - 4.7-multilib-arm-linux-gnueabi',并删除HF对应的'gcc-arm-linux-gnueabihf'和'g ++-4.8-multilib-arm-linux-gnueabihf'以防他们之前安装的每个提到的教程。 – valiano

+0

谢谢bro,@valiano。我尝试了你在评论中提到的方式。仍然无法做到。我想google在2015年改变了arm编译器。我在https://bugs.chromium.org/p/chromium/issues/list中找到了一个补丁,它将gnueabi更改为gnueabihf。有太多的相关变化,我找不到它们。 – tonymiao