web-dev-qa-db-ja.com

「./configure」オプション「--build」、「-Host」、「-target」の違いは何ですか?

スクリプト ./configureは3つのオプションを受け入れます--build--Hostおよび--target。私は彼らの役割を混乱させています。それらの違いとセマンティクスは何ですか?

107
Eonil

このブログ投稿 に記載されているように GCC構成条件 で暗示されているように、--targetはツールチェーンをコンパイルする場合にのみ適用されます。使用するライブラリまたはバイナリの通常のクロスコンパイルを実行しているとき

--build=the architecture of the build machine
--Host=the architecture that you want the file to run on

ただし、ツールチェーンを構築する場合、事態はさらに複雑になります。私は次のことが正しいと思います(クロスデバッガを手動でコンパイルしたことがあるとは言えませんが):

あなたが持っていると言うことができます:

  • すべてのコンパイルを実行するpowerpcビルドマシン
  • コードが実行されるmipsプロセッサを備えたいくつかの組み込みデバイス
  • 現場でこれらのデバイスをデバッグするために使用するx86ラップトップ

組み込みデバイスで実行するように、デバッグサーバー(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で実行します。

98
user124850

注:引数--targetは、コンパイラ(GCCなど)をビルドする場合にのみ意味があります。 GCCをビルドする前にconfigureを実行する場合:

  • --build:構築中のマシン
  • --Host:構築するマシン
  • --target:GCCがバイナリを生成するマシン

GCCドキュメントホスト/ターゲット固有のインストールノート )から:

ビルド、ホスト、およびターゲットがすべて同じ場合、これはネイティブと呼ばれます。ビルドとホストが同じであるがターゲットが異なる場合、これはクロスと呼ばれます。ビルド、ホスト、およびターゲットがすべて異なる場合、これはカナダと呼ばれます(カナダの政党および当時のビルドに携わっている人物の背景を扱うあいまいな理由のため)。ホストとターゲットが同じでもビルドが異なる場合、クロスコンパイラを使用して異なるシステムのネイティブをビルドしています。これをHost-x-Host、クロスネイティブ、またはクロスビルドネイティブと呼ぶ人もいます。ビルドとターゲットが同じで、ホストが異なる場合は、クロスコンパイラを使用して、ビルドしているマシンのコードを生成するクロスコンパイラをビルドしています。これはまれなので、それを記述する一般的な方法はありません。これをクロスバックと呼ぶ提案があります。

68
Delan Azabani