|
クロスコンパイラ()は、コンパイラが動作している以外のプラットフォーム向けに実行ファイルを生成する機能を持つコンパイラである。クロスコンパイラは主に組み込みシステム向けのコンパイラや、マルチプラットフォーム対応のコンパイラとして使われる。 必要最小限のメモリしか搭載していないことが多いマイクロコントローラを使った組み込みシステムなど、実行ファイルを動作させたいプラットフォームがコンパイル環境としては不適切な場合にはクロスコンパイラは必須である。 システムが複数のプラットフォームをサポートする場合に、準仮想化のためのツールとしてクロスコンパイラを利用することが一般化しつつある。 == 使用法 == クロスコンパイラの基本的使用法は、ビルド環境をターゲット環境から分離することである。これは以下のような場合に便利である。 * リソースが極めて限られている組み込みシステム。例えば電子レンジに組み込まれたコンピュータは非常に小型で、入力として操作パネルとドアの開閉センサ、出力としてディスプレイとスピーカーがあり、調理用機械を制御する。このコンピュータ上で、コンパイラやファイルシステムや開発環境を動作させるのには無理がある。デバッグやテストには組み込みシステムが備えている以上のリソースが必要とされるため、クロスコンパイルは通常のコンパイルよりもエラーを多めに検出する傾向がある。 * 複数マシン向けのコンパイル。例えば、企業が1つのOSの複数バージョンをサポートする場合や、複数のOSをサポートする場合。クロスコンパイラを使えば、1つのビルド環境でそれら複数のターゲットのコンパイルが可能となる。 * サーバファームでのコンパイル。複数マシン向けのコンパイルと似ているが、サーバファーム上の比較的暇なマシン上で任意のサーバ向けのビルドを行う。 * 新たなプラットフォーム向けのブートストラッピング。新しいプラットフォーム向けにソフトウェアを開発する場合や将来のプラットフォームのエミュレータについて、クロスコンパイラでOSやネイティブのコンパイラといった必要なツールをコンパイルする。 JavaのJVMのような仮想機械を使うことで、クロスコンパイラを開発する動機となっている問題の一部は解決される。仮想機械は、1つのコンパイラの出力を複数の異なるシステムで利用可能にする。 典型的にはアーキテクチャが異なればクロスコンパイラを利用することになる(例えば、MIPSアーキテクチャ向けのプログラムをx86上でコンパイルするなど)。しかしそれだけでなく、OS環境が違うだけであってもクロスコンパイラが使われ、例えばLinux上でFreeBSD用の実行ファイルを作るといった利用が考えられる。さらには、システムライブラリが違う環境向けのクロスコンパイルもある(glibcホスト上でuClibcを使ったコンパイルをするなど)。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「クロスコンパイラ」の詳細全文を読む スポンサード リンク
|