一般的な質問:クロスコンパイラを使用する場合、configureを実行するときに指定する必要がある「--Host」オプションの値をどのように判断できますか?
具体的:arm64Archにクロスコンパイラを使用しています。使用する正しい「--Host」値は何ですか?
クロスコンパイラを使用している場合、
--Host
を実行するときに指定する必要がある./configure
オプションの値をどのように判断できますか?
ツールチェーンの作成について説明するときは、3つのマシンを区別する必要があります
ツールチェーンには、次の4つの一般的なビルドタイプがあります。
ネイティブビルドつまりBUILD==Host==TARGET
ワークステーション用の通常のgccをビルドするために使用されます。例えばBUILD==Host==TARGET==x86
クロスビルドつまりBUILD==Host!=TARGET
ワークステーションで機能するが、ターゲットのバイナリを生成するツールチェーンを構築するために使用されます。例えばBUILD==Host==x86 TARGET==arm
クロスネイティブビルドつまりBUILD!=Host==TARGET
ターゲットで動作し、ターゲットのバイナリを生成するツールチェーンに使用されます。例:BUILD==x86 Host==TARGET==ARM
カナダのツールチェーンつまりBUILD!=Host!=TARGET
アーキテクチャAの構築に使用ツールチェーンはBで実行され、アーキテクチャCのバイナリを生成します。例:BUILD==x86 Host==mac TARGET==arm
武装して、この基本があなたの質問に来ます。
どのソフトウェアでも、最初に./configure --help
を実行します
ホストタイプ:
--build=BUILD configure for building on BUILD [BUILD=Host]
--Host=HOST configure for Host [guessed]
--target=TARGET configure for TARGET [TARGET=Host]
上記にあるので、やりたいことに応じて、クロスコンパイル用に設定する必要があります。すべてのオプションが利用可能な場合は、アームターゲットで実行し、--Host={your toolchain triplet} --target={your toolchain triplet}
を設定します。
たとえば、arm-none-linux-gnueabi-gcc
を使用している場合は、--Host=arm-none-linux-gnueabi --target=arm-none-linux-gnueabi
を設定します。これにより、メイクファイルに書き込まれます。最後に、生成された実行可能ファイルはターゲット上で実行されます。 --build
の場合、これは自動的に設定されます。心配する必要はありません。
一部のソフトウェアパッケージでは、2つのオプションのみが利用可能ですi.e Host and build
。ここで、set Host
がクロスコンパイルするのに十分である場合
特定:
arm64
Archにクロスコンパイラを使用しています。使用する正しい--Host
値は何ですか?
X86_64の場合、通常は--Host={triplet}
が指定されるため、ツールチェーンに--Host={triplet}
を設定することで、arm64でも同じことが機能すると思いますが、よくわかりません。
--Host
に何を入力するかを見つける最も簡単な方法は、ホストマシンでconfig.guess
を実行することです。私のマシンでは/usr/share/automake-1.15/
にありましたが、locate config.guess
を実行して見つけることをお勧めします。
スクリプトはオープンソース(GPL)であり、マシンで利用できない場合に備えて、次のアドレスで利用できます。
https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
私のターゲットマシンでは、tegra X1(これもaarch64)の答えはaarch64-unknown-linux-gnuでした。これは、クロスコンパイルには問題なく機能するようです。
-ホストは、結果のビルドが最終的に実行されるマシンの「トリプレット」です。あなたの場合、「arm64」はアーキテクチャですが、これはトリプレットの1つにすぎません。いずれにせよ、それはトリプレットの文字列「aarch64」にマップされます。考えられる値の1つは
--Host = aarch64-linux-Android
this gnu.orgのページ --Host/-target/-buildの使用法に関する決定的な答えを示します