2017-11-22 37 views
3

cargo build --release --target aarch64-unknown-linux-gnuを使用して私のaarch64アーキテクチャー用にspotifydをコンパイルしようとしていますが、すべての依存関係がインストールされています。spotifyd、arm64のクロスコンパイル

しかし、最後のステップ(Compiling spotifyd v0.1.1 (file:///home/ubuntu/spotifyd)が)で失敗します。

= note: aarch64-linux-gnu-ld.gold: -Wl,--as-needed: unknown option 
      aarch64-linux-gnu-ld.gold: use the --help option for usage information 

貨物のための私の設定はaarch64リンカーを使用するように設定されている:

/root/.cargo/config 

[target.aarch64-unknown-linux-gnu] 
linker = "aarch64-linux-gnu-ld.gold" 

-Wlaarch64-linux-gnu-ld.gold内で使用可能ではないようです、私が使用できるaarch64-linux-gnu-ld.goldの代替品はありますか、または貨物から-Wlフラグを取り除くことは可能ですか?

アドバイスをいただきありがとうございます。

+0

「amd64」または「arm64」は今ですか?また、 '-Wl、xyz'をリンカに渡すことは、私にとっては奇妙に思えます。なぜなら、そのフラグは通常、"リンカーに転送する "という意味であるからです... – Siguza

+0

arm64、-wlは自動的に貨物に渡されるようです... –

答えて

0

リンカはオプションとして "-Wl"を受け入れません。これはgccコンパイラドライバのコマンドラインパラメータです。

Gccは、このオプションを使用してコマンドラインパラメータをリンカに渡します。このパラメータは、ドライバgccが.o(オブジェクト)ファイルを提供する場合に呼び出します。

は、リンカのオプションとして-Wl、オプション

パスオプションgccのドキュメント3.14 Options for Linking

を参照してください。オプションにコンマが含まれている場合、コンマで複数のオプションに分割されます。

(ちょうど下へ進んでください)これらの説明のいずれかを参照してください。

のGentoo Wikiの、「Project: Quality Assurance/As-needed」セクションの「コンパイルに失敗し、認識できないオプション」。

使用しているBinutils Goldリンカのバージョンに注意してください。Bug 18859を例として参照してください。常にバグレポートをチェックしてください。ただし、バグは問題ではありません。

あなたの最後の質問に直接答えるには「私は貨物から荷物を取り除くことはできますか?」とはいっていますが、それは間違ったことです。そのコマンドは未使用のコードを取り除きます。

このオプションを使用すると、作成中の共有ライブラリが実際に使用していない場合、コマンドラインで提供されているライブラリの一部を無視することができます。

リンカーをaarch64-linux-gnu-gccに変更して、リンクする必要があります。 Reddit "Cross-compiling and linker flags"に関するmartinhathの質問を参照してください。

だから何あなたが欲しいのはこれです:

/root/.cargo/config

[target.aarch64-未知のlinux-gnuの]

リンカ=「aarch64-linux- gnu- gcc

+0

うわー!あなたの仕事とここを掘り下げてくれてありがとう!私はもちろんそれを試みます! –

+0

問題ありません。 .configureファイルを調べて、リンカが検出された場所を見つけて、コンパイラドライバではなくリンカを直接呼び出す理由を判断することができます。通常、特定のリンカの特定の機能を検出するために拡張検出ルーチンが利用されます。その後のスクリプトは、この方法に合わせて調整する必要があります。これは構成上のバグですが、コンピュータやプログラムに損害を与えるものはありません(そのスクリプトが編集されると)。 Docsで提供されているメールアドレスまたはウェブサイトでBug Reportを発行することは、その方法です。 – Rob

+0

私は別の問題(libasound)に苦しんでいますが、あなたの答えはこの質問の正しい答えです。本当にありがとう! –