平成30/ 2018-12-19 17:45
応用情報/ クロスコンパイラ
Windowsで、クロスコンパイラを使って、MACのアプリを作った♪という感じ。

(Thanks!)
クロスコンパイラ
http://www.wdic.org/w/TECH/%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%A9
他のアーキテクチャ向けの機械語などを出力するコンパイラである。
使い慣れた環境で、他の目的とする環境向けの開発を行なう場合に使われる。

例えば、SuperHをCPUとする装置を開発すると想定した場合、この装置自身でコーディングからコンパイルまでを行なうのは困難なことが多い。
そこで、一般的なパーソナルコンピューターを用い、SuperH用の機械語を出力するコンパイラを使って開発を行なう。このとき使われるものがクロスコンパイラである。
例えばMicrosoft Windowsで動くSuperH用のCクロスコンパイラとしては、ルネサステクノロジの純正品と、イエローソフトの製品が有名で、このほかにGCC for SuperHなどがある。

クロスコンパイラ
http://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%A9

クロスコンパイラ(英: Cross compiler)は、コンパイラが動作している以外のプラットフォーム向けに実行ファイルを生成する機能を持つコンパイラである。クロスコンパイラは主に組み込みシステム向けのコンパイラとして使われたり、マルチプラットフォーム対応のコンパイルに使われる。実行ファイルを動作させたいプラットフォームがコンパイル環境としては不適切な場合には必須であり、例えばマイクロコントローラを使った組み込みシステムは本来の用途に必要最小限のメモリしか搭載していないことが多い。システムが複数のプラットフォームをサポートする場合に、準仮想化のためのツールとしてクロスコンパイラを利用することが一般化しつつある。

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

#key#クロスコンパイラ