クロスコンパイルの正確な定義を誰か説明してもらえますか。私がこれを尋ねているのは、次の理由からです。
- プログラムが、コードがコンパイルされているホスト プラットフォーム以外の異なるプラットフォーム (オペレーティング システム) にコンパイルされる場合、多くの場合、これをクロス コンパイルと呼びます。
例: 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 が異なります。