GCCとクロスコンパイル
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/12/01 16:30 UTC 版)
「クロスコンパイラ」の記事における「GCCとクロスコンパイル」の解説
GCCは、コンパイラ群を集約したフリーソフトウェアであり、クロスコンパイル向けの設定も可能である。GCCは様々なプラットフォームや言語をサポートしている。しかし、手が足りないためにクロスコンパイラの保守がなされていない場合があり、多くのリリースでクロスコンパイラが機能していない。 GCCには、ターゲットプラットフォーム毎にbinutilsのコンパイルされたコピーが必要である。その中でも GNUアセンブラ が重要である。従って、binutils をまず --target=some-target スイッチ付きでコンパイルしなければならない。GCC も同じ --target オプション付きで設定しなければならない。GCCはパスで指定されたbinutilsを使って普通に動作する。パスは(シェルとしてBashを使う場合には)以下のように指定する。 PATH=/path/to/binutils/bin:$PATH; make クロスコンパイルを行うGCCでは、ターゲットプラットフォームの標準Cライブラリがホストプラットフォームで利用可能になっている必要がある。少なくとも、crt0というライブラリの一部は必須である。標準Cライブラリ全体をコンパイルした場合、プラットフォームによっては大きすぎることもある。代替として、標準CライブラリのうちC言語のソースコードのコンパイルに必須な部分だけを抽出したnewlibを使う方法もある。GCCでnewlibを使うには --with-newlib スイッチを使う。 GNU autotoolsパッケージでは、ビルドプラットフォーム (build platform)、ホストプラットフォーム (host platform)、ターゲットプラットフォーム (target platform) という用語を使う。ビルドプラットフォームとは、コードが実際にコンパイルされる場所を指す。ホストプラットフォームとは、コンパイルされたコードが実行される場所を指す。ターゲットプラットフォームとは、コンパイラにのみ適用され、パッケージ自身が生成するオブジェクトコードのタイプを表す(例えば、クロスコンパイラをクロスコンパイルする場合など)。それ以外の場合はターゲットプラットフォームの設定は不適切である。例えば、ドリームキャストで動作するビデオゲームのクロスコンパイルを考えると、コンパイルを行うマシンがビルドプラットフォームで、ドリームキャストがホストプラットフォームとなる。
※この「GCCとクロスコンパイル」の解説は、「クロスコンパイラ」の解説の一部です。
「GCCとクロスコンパイル」を含む「クロスコンパイラ」の記事については、「クロスコンパイラ」の概要を参照ください。
- GCCとクロスコンパイルのページへのリンク