2017-07-14 8 views
0

ARMプラットフォームのクロムをビルドする際に問題があります。ARM gnビルドの問題のクロムバージョン53

のLinuxバージョン4.2.0-42-ジェネリック(builddの@ lgw01-55)(gccのバージョン4.8.4(Ubuntuの〜14.04.3 4.8.4-2ubuntu1))

:ここに私のホストサーバーに関するいくつかの詳細があります

また、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プラットフォームに応じて、「softfp」にするにはarm_float_abi属性が必要です。だから、私はそれを "ハード"に変更することはできませんのでご注意ください。また、float abi = "hard"と設定すると、ビルドエラーは発生しません。

答えて

0

私はこの質問を投稿し、最終的にそれを解決しました。 ARMプラットフォームでローカルツールチェーンを使用し、g ++で正常にコンパイルしました。

0

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

これにより、浮動小数点ABIのミスマッチに、minidump-2-coreをリンクすることができないことを示すためにリンクエラー:オブジェクトminidump-2-core.oハードフロートのためにコンパイルされる(生成されたコードがARM VFP unitを利用する - 「VFPを使用しレジスタの引数 ")、ターゲットの実行可能ファイルは、特殊なFPハードウェア命令を使用するのではなく、浮動小数点サポートをエミュレートするソフトフロートを使用するように要求されます。

このbug reportによれば、クロムは柔らかいフロートできれいにする必要があります。

softfpsoftarm_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 = "ソフト"オプションを試してみて、同じエラーが発生しました。また、私が以前触れたチュートリアルも読んでいます。残念ながら、私はこのチュートリアルが主に "ハード"フロート方法に焦点を当てていると思います。私は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

おじいさん、@valianoありがとう。私はあなたがコメントで言及した方法を試みた。まだそれを作ることはできません。私は2015年にGoogleが腕のコンパイラを変更したと思う。私はgnueabiをgnueabihfに変更していたhttps://bugs.chromium.org/p/chromium/issues/listのパッチを追跡した。関連する変更が多すぎるため、すべて見つけられませんでした。 – tonymiao

関連する問題