2017-07-14 124 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