web-dev-qa-db-ja.com

クロスコンパイルとは何ですか?

クロスコンパイルとは何ですか?

34
debugger

Cross-compilation は、ホストと呼ばれる別のシステム上の1つのコンピューターシステム(多くの場合、ターゲットと呼ばれます)のコードをコンパイルする行為です。

これは非常に便利な手法です。たとえば、ターゲットシステムが小さすぎて、コンパイラとすべての関連ファイルをホストできない場合です。

一般的な例には、多くの組み込みシステムが含まれますが、一般的なゲームコンソールも含まれます。

31
unwind

「クロスコンパイル」とは、MACまたはWindowsボックスでの実行を目的としたLinuxボックスでソースをコンパイルすることです。これは通常、クロスコンパイルプラグインを使用して行われます。クロスコンパイルプラグインは、ネット上のさまざまなWebサーバーからすぐに利用できます。 Windowsボックス用にコンパイルするように設計されたLinuxボックスにクロスコンパイルプラグインをインストールする場合。次に、Linux/* NIXボックス用にコンパイルするだけでなく、Windows対応の実行可能ファイルをコンパイルしてリンクするオプションもあります。これは、Linux/Windows/MACボックスを1つしかアクセスできないフリーランスのプログラマーにとって非常に便利です。さまざまなクロスコンパイルプラグインにより、多数のアプリケーションが可能になることに注意してください。そのうちのいくつかは、有用であると思われる場合とそうでない場合があります。したがって、プラグインのREADMEファイルを徹底的に調べます。

クロスコンパイルの方法を適用したいという特定のプロジェクトを念頭に置いていましたか?

8
Dillon Chaffey

クロスコンパイラは、ソースコードをあるアーキテクチャから別のアーキテクチャにコンパイルします。

例えば: hello.c

  1. gcc hello.c(gccはx86アーキテクチャ用のコンパイラです。)
  2. arm-cortexa8-linux-gnueabihf-gcc hello.c
    (arm -....- gccはarmアーキテクチャ用のコンパイラです。)これは、ターゲットボード(rpi、beaglebone、wegaボードなど)のホストPCでコンパイルしています。この例ではarm-cortexa8-linux-gnueabihf-gccは「クロスコンパイラ」と呼ばれます。

このプロセスはクロスコンパイルと呼ばれます。
詳細についてはリンクを参照してください クロスコンパイル

7
yoctotutor.com

厳密な意味では、別のホストで実行することを目的としたのは、あるホストでのコードのコンパイルです。

最も一般的には、ホストとバイナリ互換性のないアーキテクチャのコンパイルを参照して使用されます。たとえば、CISC CPUプラットフォームでRISCバイナリを構築したり、32ビットシステムで64ビットバイナリを構築したりします。または、たとえば、Intel PCベースのOS上の組み込みデバイスで実行することを目的としたファームウェアを構築します(おそらくARM CPUアーキテクチャを使用)。

3
Alex Balashov

クロスコンパイラは、コンパイラが実行されているプラ​​ットフォーム以外のプラットフォーム用の実行可能コードを作成できるコンパイラです。
例: Windows 7 PCで実行されるが、Androidスマートフォンはクロスコンパイラーです)で実行されるコードを生成するコンパイラー。

1台のマシンから複数のプラットフォーム用にコンパイルするには、クロスコンパイラが必要です。
組み込みシステムのマイクロコントローラーなど、システムにはオペレーティングシステムが含まれていないため、コンパイラーがプラットフォームを実行できない可能性があります。
準仮想化では、1台のマシンで多くのオペレーティングシステムが実行され、クロスコンパイラーは1つのメインソースからそれぞれの実行可能ファイルを生成できます。

1
Sandeep Ranjan