2011年10月23日日曜日

GCC Cross Compiler の導入方法

・クロスコンパイルのステップ
 1.ホストマシンでコンパイルする(ターゲット用のヘッダファイルが必要)
 2.生成したファイルをアセンブルする
 3.リンクして実行形式を作る


・クロスコンパイラのコンフィギュレーション
 ex) configure --target=h8300-hms


・クロスコンパイラ用のツールとライブラリ
 以下のファイルを /usr/local/target/bin というディレクトリに置く。
  ・as ・・・ クロスアセンブラ
  ・ld ・・・ クロスリンカ
  ・ar ・・・ クロスアーカイバ。ターゲットマシンの形式でアーカイブファイル(ライブラリ)を操作することができるプログラムである。
  ・ranlib ・・・ アーカイブファイルのシンボルテーブルを作るプログラム
 これらのファイルを用意する簡単な方法は Binutils と GAS を構築することである。
 このツール(Binutils と GAS)をGCC をコンフィギュレーションするのに使ったのと同じ --host, --target オプションを使ってコンフィギュレーションするようにし、構築とインストールを行う。
 標準C ライブラリのような、クロスコンパイラとともに使うライブラリをインストールする場合はそれらを/usr/local/target/lib に置くこと。
 
 多くの機種では crt0.o や crtn.o のような各実行形式ファイルにリンクされる「開始ファイル」を必要とする。この二つのファイルは/usr/local/target/lib に存在しなければならない。crt0.o には複数の変種が存在する可能性がある。これはプロファイリングや他のコンパイルオプションに応じて使われる。ターゲットの STARTFILE_SPEC の定義を見てどういう開始ファイルを使っているかを見てほしい。


・クロスコンパイラとヘッダファイル
 GNU C ライブラリが対象機種をサポートしているならそこからヘッダファイルを入手できる。適当なヘッダファイルが見つかったなら、それをクロスコンパイラを構築する前に、ディレクトリ/usr/local/target/include に置く。そうしておくとインストールの際に fixincludes が正しく実行されヘッダファイルの修正版を GNU CC が使用する場所にインストールされる。


・クロスコンパイラ構築の実際
 ヘッダファイル float.h を提供しなければならない。

参考URL:http://www.sra.co.jp/wingnut/gcc/gcc-j.html#(dir)