2017-04-27 4 views
0

私は今、yoctoでビルド可能なautotoolsプロジェクトlnavの再構築に取り組んでいます。これはlnav自体がクロスコンパイルされなければならないことを意味しますが、いくつかのヘルパープログラムはネイティブにビルドされなければなりません。autotools - クロスコンパイルとネイティブ中間ビルドプログラムの作成

このスレッドはすでに見つかりましたthis threadしかし、最初の提案された解決策は機能しませんが、2番目はプロジェクト構造に多大な侵害をもたらします。

誰かが私にこれを解決するヒントを教えてもらえますか?多分、どのAC/AMマクロがその仕事をしているのか、良い例を得るべき場所を教えてください。

+0

私は問題の性質を理解していません。同じビルド内で異なるホストタイプのコンポーネントをビルドする必要があるのはなぜですか?ヘルパーはビルド*のみをサポートしていますか、それともパッケージのインストール可能な部分ですか? –

+0

@johnはい、そうです。これらのヘルパープログラムは、ビルドの場合のみ_only_であり、ターゲットにはインストールされません。ヒントのために –

答えて

1

実行ホストごとに異なるビルドを作成する必要がある場合は、ビルドツールを個別にビルドするのが最もクリーンな方法です。リンクした回答の1つが、これを行う方法について説明しています。しかし、よく書かれたAutotoolsビルドシステムを使用している場合は、ソース外のビルドを活用することで、これとは異なる方法で対処することができます。これはスクリプトで記述することができます。

ツールをビルドするディレクトリを作成します。そのディレクトリで、ビルドシステム(path-to-source-dir/configure)を設定し、必要なツールをビルドします。次に、ソースディレクトリまたは別のソース外のビルドディレクトリで、適切な--build--hostのトリプレットをconfigureに指定してクロスコンパイルを設定し、ビルドされたツールをビルドディレクトリにコピーまたはリンクして残りを実行しますビルドの。

ビルドシステムが特に注意深く作成されている場合は、異なるホスト上のビルドツールの異なる実行可能な拡張機能のための規定を克服する必要があります。これを行う必要があり、とにかく2段階のクロスコンパイルをスクリプト化する予定がある場合は、ツールをコピー/リンクするときに問題を処理できます。コアビルドシステムに特別なサポートを書く必要はありません。一般的にクロスコンパイルをサポートする

configure.acAC_CANONICAL_BUILDAC_CANONICAL_HOSTのマクロを使用する必要がありますし、ビルドマシンは、適切なクロスコンパイルツールチェーンをインストールする必要があります。

+0

ありがとう;) –

関連する問題