クロスコンパイル - プラットフォームとアーキテクチャ

クロスコンパイル - プラットフォームとアーキテクチャ

クロスコンパイルの正確な定義を誰か説明してもらえますか。私がこれを尋ねているのは、次の理由からです。

  • プログラムが、コードがコンパイルされているホスト プラットフォーム以外の異なるプラットフォーム (オペレーティング システム) にコンパイルされる場合、多くの場合、これをクロス コンパイルと呼びます。

例: Windows 上で Linux arm 用にコンパイルする。

  • 一方、Linux デスクトップ (i386 アーキテクチャ) でプログラムをコンパイルして Linux arm (ARM アーキテクチャ) で実行する場合、このプロセスはクロスコンパイルと呼べるでしょうか?

ありがとう。

答え1

プラットフォームという用語には、プログラムがコンパイルまたは実行されるコンピューターに関するすべての詳細が含まれます。これは次のようなものを意味します。

  • CPU: 命令セット (x86、x86_64、ARM)、エンディアン (ビッグ エンディアン、リトル エンディアン)
  • コンパイラ: 言語 (例: C90、C99、C11)、ベンダー (GCC、LLVM)
  • glibc や BSD libc、malloc、jemalloc などのライブラリ
  • オペレーティング·システム

プログラムがコンパイルされるプラットフォームが、プログラムが実行されるプラットフォームと異なる場合、クロスコンパイルが行われます。あなたの場合は、CPU が異なります。

関連情報