スクリプト ./configure
は3つのオプションを受け入れます--build
、--Host
および--target
。私は彼らの役割を混乱させています。それらの違いとセマンティクスは何ですか?
このブログ投稿 に記載されているように GCC構成条件 で暗示されているように、--target
はツールチェーンをコンパイルする場合にのみ適用されます。使用するライブラリまたはバイナリの通常のクロスコンパイルを実行しているとき
--build=the architecture of the build machine
--Host=the architecture that you want the file to run on
ただし、ツールチェーンを構築する場合、事態はさらに複雑になります。私は次のことが正しいと思います(クロスデバッガを手動でコンパイルしたことがあるとは言えませんが):
あなたが持っていると言うことができます:
組み込みデバイスで実行するように、デバッグサーバー(gdbserverなど)を構成および構築します。
./configure --build=powerpc --Host=mips
組み込みデバイスにPuTTYを実行し、「gdbserver:1234 a.out」を実行してデバッグを開始し、ポート1234でリッスンできるようにします。
次に、デバッグクライアント(gdbserverに接続して制御)をビルドします。
./configure --build=powerpc --Host=i686 --target=mips
これをx86ラップトップにコピーして、フィールドで「gdbclient embedded.device:1234」を実行してa.outプログラムをデバッグできるようにします。
これはすべて、上記のGCCリンクまたは Canadian cross コンパイルに関するこのセクションを参照したいコンパイラーにも当てはまります。
また、実際には、ビルド、ホスト、またはターゲットが指定されていないことがあります。これは、 このAutoconfマニュアルページ 、「ターゲットのデフォルトはホスト、ビルドするホスト、および構成の結果にビルドするため」 。推測。"
Wordでは、--build
でコードをビルドし、--Host
アーキテクチャ環境で--target
で実行します。
注:引数--target
は、コンパイラ(GCCなど)をビルドする場合にのみ意味があります。 GCCをビルドする前にconfigure
を実行する場合:
--build
:構築中のマシン--Host
:構築するマシン--target
:GCCがバイナリを生成するマシンGCCドキュメント ( ホスト/ターゲット固有のインストールノート )から:
ビルド、ホスト、およびターゲットがすべて同じ場合、これはネイティブと呼ばれます。ビルドとホストが同じであるがターゲットが異なる場合、これはクロスと呼ばれます。ビルド、ホスト、およびターゲットがすべて異なる場合、これはカナダと呼ばれます(カナダの政党および当時のビルドに携わっている人物の背景を扱うあいまいな理由のため)。ホストとターゲットが同じでもビルドが異なる場合、クロスコンパイラを使用して異なるシステムのネイティブをビルドしています。これをHost-x-Host、クロスネイティブ、またはクロスビルドネイティブと呼ぶ人もいます。ビルドとターゲットが同じで、ホストが異なる場合は、クロスコンパイラを使用して、ビルドしているマシンのコードを生成するクロスコンパイラをビルドしています。これはまれなので、それを記述する一般的な方法はありません。これをクロスバックと呼ぶ提案があります。