クロスコンパイルとネイティブコンパイルの具体的な違いは何ですか?
答え1
あなたは一つを使うクロスコンパイラlocalhost以外のプラットフォーム用の実行可能ファイル(またはオブジェクト)を生成します。ネイティブコンパイラはネイティブバイナリのみを生成します。
答え2
クロスコンパイルは、実行中のCPUとは異なるCPUタイプに対してコンパイルすることです。たとえば、i386システムでARMバイナリをコンパイルしたり、32ビットシステムで64ビット実行可能ファイルをコンパイルしたりします。
クロスコンパイル時には通常、バイナリが属するシステムに転送されるまで、コンパイルした内容を実行することはできません。
ネイティブコンパイルとは、実行中のアーキテクチャと同じアーキテクチャでコンパイルすることを意味します。これは通常の現象です。
答え3
クロスコンパイルは、実行中のプラットフォーム(およそオペレーティングシステム、CPUスイート、ABIの組み合わせ)以外のプラットフォーム用に構築されています。これは、あるプラットフォームで実行されますが、別のプラットフォームをターゲットとするコンパイラがあることを意味します。一般的に(一部のプラットフォームには互換性レイヤがあるという例外があります)、これは構築したばかりのバイナリを実行できないことを意味します。
クロスビルドでは通常、コンパイラ自体はそれほど大きな問題にはなりませんが、残りのビルドシステムは問題になります。ビルドシステムは正しいオプションを使用して正しいコンパイラを実行する必要があります。多くのビルドシステムは、実行中のシステムの詳細を確認するためにテストプログラムをビルドして実行します。クロスビルの場合、通常これを行うことはできません。多くのビルドシステムは、ビルドプロセス中にオブジェクトを生成するためにビルドしたプログラムを使用します。これは、ビルドシステムがビルドターゲットプラットフォームのための何か、ビルドターゲットプラットフォームのための何か、そしておそらくビルドターゲットプラットフォームのための何かをビルドしなければならないことを意味します。どちらも。