なぜクロスコンパイラを使用し、クロスコンパイラは何か[ターン]?

まず、クロスコンパイラは何ですか

コンピュータ環境で実行されているコンパイラ、別の環境で実行するようにコードをコンパイルし、我々は、このコンパイラはクロスコンパイルをサポートして呼び出します。このコンパイル処理は、クロスコンパイルと呼ばれています。

簡単に言えば、それは、プラットフォーム上の他のプラットフォーム上で実行可能なコードを生成することです。

アーキテクチャ(アーキテクチャ)、OS(OperatingSystemの):いわゆるプラットフォームは、実際には二つの概念で構成されていることに注意すべきです。同アーキテクチャは、異なるオペレーティングシステムを実行することができ、同様に、異なるアーキテクチャー上の同じオペレーティングシステムを実行することができます。たとえば、私たちはしばしばx86のLinuxプラットフォームをまとめ、実際にx86オペレーティング・システム用のIntel x86アーキテクチャとLinuxであることを言う;およびx86 WinNTのプラットフォームは、実際には短いのx86オペレーティング・システム用のIntel x86アーキテクチャとWindows NTです。

クロスコンパイル及びポップ概念の出現は、広範かつ組み込みシステム(エンベデッドシステム)の同期の開発です。

我々は、コンピュータソフトウェアを使用する、方法をコンパイルする必要があり、コンパイラ(コンパイル)コンピュータが認識へとバイナリコードが実行される(例えばCコードなど)の高レベルのコンピュータ言語コードを使用します。例えば、我々のWindowsプラットフォーム上では、Visual C ++開発環境を使用し、プログラミングおよび実行可能プログラムにコンパイル。このように、我々はPCプラットフォームの実行ファイル上で開発されたWindowsツールを使用します(現在のプラットフォームでコンパイルし、プログラムのみを実行するために、現在のプラットフォームにコンパイルすることができます。)Windows自体の場合、このプロセスはネイティブ・コンパイルと呼ばれていますコンパイル、中国に理解コンパイルベースのマシン。しかし、組み込みシステムの開発中に、典型的には、プログラムを実行しているターゲットプラットフォームは、一般に静的記憶空間であるARM、のための共通プラットフォームとして、記憶空間および計算能力が制限されている、おそらくCPUのクロック速度が、約16 32メガバイトであります100MHzの間で500MHzのへ。この場合、ARMプラットフォーム上でネイティブコンパイラでは可能性が低い、これは一般的なコンパイラツールチェーン(コンパイルツールチェーン)は、ストレージスペースの多くを必要とし、強力なCPUパワーを必要としているため。この問題を解決するために、クロスコンパイルツールはされて入ってきました。クロスコンパイラツールによって、我々は(PCなど)のプラットフォームをホストするのに十分な、非常に強力なCPUパワー、収納スペース、中に他のプラットフォームのための実行可能プログラムをコンパイルすることができます。

コンパイラを横断するために、我々は、ホストプラットフォームに対応するクロスコンパイラチェーン(クロスコンパイルツールチェーン)にインストールする必要があり、その後、ツールチェーン私たちのソースをコンパイルするために、このクロスコンパイラを使用し、最終的に生成されたコードは、ターゲットプラットフォーム上で実行することができます。次のようにクロスコンパイルの一般的な例:

WindowsのPC上の1は、ADS(ARM開発環境)を使用して、armccをコンパイラを使用して、実行可能コードは、ARMのCPU用にコンパイルすることができます。

2は、LinuxのPC上で、アームのlinux-gccのコンパイラを使用して、実行可能コードはLinuxのARMプラットフォーム用にコンパイルすることができます。

3は、WindowsのPC上で、アームエルフ - gccのコンパイラを実行しているcygwinの環境を使用して、実行可能コードは、ARM CPU用にコンパイルすることができます。

第二に、なぜクロスコンパイラを使用

宛先が許可されていないか、プラットフォームをインストールすることはできませんので、時には私たちは、コンパイラが必要、と私たちは、コンパイラの機能のいくつかを必要とします。

時にはので、先プラットフォーム上のリソースの不足のため、コンパイラは、私たちが必要なものを実行することはできません。

先のプラットフォームが、でも、オペレーティング・システムを確立していないので、時にはそれがないコンパイラが実行されているものを言及すること、ではないです。

第三に、地元のコンパイルとクロスコンパイラを比較

ネイティブ・コンパイル:プログラムによってコンパイルされた現在のプラットフォーム用のコンパイルにのみ、現在のプラットフォームに実行することができ、としてネイティブ・コンパイルを理解することができます。通常、我々は一般的なソフトウェア開発を持っている、それがネイティブ・コンパイルのです。例えば、我々は、x86プラットフォーム上でプログラミングされ、実行可能プログラムにコンパイル。このように、我々は、それ自体が実行可能なプログラム、コンパイル処理はローカルのコンパイルと呼ばれたx86、x86プラットフォーム上のプラットフォーム用に開発するためのツールを使用します。

クロスコンパイル:クロスコンパイラは、プログラムによってコンパイルされた現在のプラットフォーム用のコンパイル、中に別のターゲットプラットフォームに異なるシステムアーキテクチャで実行することができ、と(彼らが行うことができないプラットフォームを、ので、他のプラットフォームを乾燥させて)理解することができるのが、コンパイラプラットフォーム自身がプログラムを実行することはできません。例えば、我々はx86プラットフォーム、プログラミング上で、実行されていないx86プラットフォーム上でコンパイルされたプログラムを、その結果、ARMプラットフォーム上で実行できるプログラムにコンパイルされ、それを実行するために、ARMプラットフォーム上に配置する必要があります。

おすすめ

転載: www.cnblogs.com/MakeView660/p/11275057.html