実行ホストごとに異なるビルドを作成する必要がある場合は、ビルドツールを個別にビルドするのが最もクリーンな方法です。リンクした回答の1つが、これを行う方法について説明しています。しかし、よく書かれたAutotoolsビルドシステムを使用している場合は、ソース外のビルドを活用することで、これとは異なる方法で対処することができます。これはスクリプトで記述することができます。
ツールをビルドするディレクトリを作成します。そのディレクトリで、ビルドシステム(path-to-source-dir/configure
)を設定し、必要なツールをビルドします。次に、ソースディレクトリまたは別のソース外のビルドディレクトリで、適切な--build
と--host
のトリプレットをconfigure
に指定してクロスコンパイルを設定し、ビルドされたツールをビルドディレクトリにコピーまたはリンクして残りを実行しますビルドの。
ビルドシステムが特に注意深く作成されている場合は、異なるホスト上のビルドツールの異なる実行可能な拡張機能のための規定を克服する必要があります。これを行う必要があり、とにかく2段階のクロスコンパイルをスクリプト化する予定がある場合は、ツールをコピー/リンクするときに問題を処理できます。コアビルドシステムに特別なサポートを書く必要はありません。一般的にクロスコンパイルをサポートする
、configure.ac
はAC_CANONICAL_BUILD
とAC_CANONICAL_HOST
のマクロを使用する必要がありますし、ビルドマシンは、適切なクロスコンパイルツールチェーンをインストールする必要があります。
私は問題の性質を理解していません。同じビルド内で異なるホストタイプのコンポーネントをビルドする必要があるのはなぜですか?ヘルパーはビルド*のみをサポートしていますか、それともパッケージのインストール可能な部分ですか? –
@johnはい、そうです。これらのヘルパープログラムは、ビルドの場合のみ_only_であり、ターゲットにはインストールされません。ヒントのために –