組み込み向けクロス開発環境の構築

5. GNU開発環境のビルド

 それでは、米FSFのホームページからGNU開発環境を入手し使用してみることにしましょう。どうでしょうか?必要なバイナリコードが見あたらないでしょうか?そうです。実は、米FSFのホームページからはクロス開発に使用するためのバイナリコードは配布されていません。といいますのも、開発するホスト、そしてターゲットとなるプロセッサの組み合わせは、無数に存在します。よって、これらのすべての組み合わせについてバイナリコードを配布することは不可能なのです。しかし、ここであきらめないでください。バイナリコードがなくてもソースコードが配布されていますので、ソースコードから簡単にバイナリコードをビルド(構築)することが出来るのです。
 ここでは、多数の読者が利用していると思われるWindows 2000/XP環境を例にビルドし、開発環境を構築してみます。
開発環境の構築手順は、以下の通りです。

  1. Cygwin環境のダウンロードとインストール
  2. binutils, gcc, newlib, gdbのダウンロードとコンフィグレーション、ビルド、インストール
  3. GDBスタブのROMへの書き込み

5.1 Cygwin環境のダウンロードとインストール

 Cygwin環境とは、Windows上でUNIXに似た環境を提供する環境であり、cygwin1.dllというダイナミックリンクライブラリ(DLL)を中心として、シェルやエディタなど様々なツールが提供されています。2004年8月29日現在、Cygwinプロジェクトのホームページ(http://cygwin.com/)からバージョン1.5.10-3のCygwin DLLが提供されています。初めてのダウンロードとインストールの際は、setup.exeをダウンロードして実行し、指示に従ってダウンロードとインストールを行います。無事インストールが終わると、(インストールの終了時に選択した場合)デスクトップ上にCygwinというショートカットが出来ますので、ダブルクリックしてシェルを起動してください。lsなどのコマンドが使用できるように環境が整っているはずです。(図3)

図3. Cygwinのシェル環境

Cygwinのシェル環境

 GUIを用いた統合開発環境に慣れている方にとっては、いきなりシェルがでてきて驚くかもしれませんが、ここでは基礎について解説していますのでシェルでの操作を前提とします。もちろん、GNU開発環境にもGUIを用いた統合開発環境がたくさん用意されていますので、プロジェクトの開発スタイルにあった環境を構築するのが良いでしょう。

5.2 binutils, gcc, newlib, gdbのダウンロードとコンフィグレーション、ビルド、インストール

5.2.1 ソースコードのダウンロードと解凍・展開

 まず、図4のようにmkdirコマンドで/usr/local/src/gnuディレクトリを作成し、その下に

を各配布元またはミラー先からダウンロードし保存します。各パッケージの配布元を表5に示します。

表5.各パッケージの配布元

パッケージバージョン配布元
binutils2.14http://sources.redhat.com/binutils
gcc3.3.3http://gcc.gnu.org/
newlib1.11.0http://sources.redhat.com/newlib/
insight6.0http://sources.redhat.com/gdb/

図4. mkdirコマンドを使用したディレクトリの作成

$ mkdir -p /usr/local/src/gnu

 次に、ダウンロードしたファイルを解凍・展開し、newlib-1.11.0ディレクトリ内のnewlibとlibglossディレクトリをgcc-3.3.3ディレクトリにコピーします。(図5)

図5. ファイルの解凍・展開

$ cd /usr/local/src/gnu
$ tar jxvf binutils-2.14.tar.bz2
$ tar jxvf gcc-3.3.3.tar.bz2
$ tar zxvf newlib-1.11.0.tar.gz
$ tar jxvf insight-6.0.tar.bz2
$ cp -r newlib-1.11.0/newlib ./gcc-3.3.3/
$ cp -r newlib-1.11.0/libgloss ./gcc-3.3.3/

5.2.2 binutilsのコンフィグレーション、ビルド、インストール

 GNUソフトウェアをソースコードからビルドするためには、ほとんどの場合でコンフィグレーション(configure)、ビルド(make all)、インストール(make install)という3段階の手順が必要となります。これは、異なるホストやターゲットに対応するために実装されている便利な仕組み(Autoconfという機能)です。
 では、早速、binutilsのコンフィグレーション、ビルド、インストールを行ってみましょう。今回は、ターゲットがH8/300H(オブジェクトファイル形式はh8300-elf)の例について説明します。その他のターゲットの場合は、表6に示すターゲット名を使用してください。また、インストールディレクトリは、/usr/local/gnuと仮定します。binutilsのコンフィグレーション、ビルド、インストールの手順を図6に示します。

表6.アーキテクチャと対応するターゲット名の例

アーキテクチャターゲット名
ARM (StrongARM, Xscaleを含む)arm-elf
Intel x86i386-elf
MIPS32mipsisa32-elf
PowerPCpowerpc-eabi
SuperHsh-elf
H8/300Hh8300-elf
M32Rm32r-elf
V850v850-elf
FRfr30-elf
FR-Vfrv-elf

図6. binutilsのコンフィグレーション、ビルド、インストール

$ cd
$ mkdir build-binutils-h8300-elf
$ cd build-binutils-h8300-elf
$ /usr/local/src/gnu/binutils-2.14/configure --prefix=/usr/local/gnu \
  --target=h8300-elf --disable-nls -v 2>&1 | tee configure.out
$ make all 2>&1 | tee make_all.out
$ make install 2>&1 | tee make_install.out
$ export PATH=/usr/local/gnu/bin:$PATH
$ h8300-elf-as -v

5.2.3 gcc, newlibのコンフィグレーション、ビルド、インストール

 binutilsのインストールが完了したら、図7のようにgccとnewlibのコンフィグレーション、ビルド、インストールを行います。newlibのビルドに結構時間がかかるため、高速のプロセッサを搭載したPCでも1時間以上かかりますので注意してください。

図7. gcc, newlibのコンフィグレーション、ビルド、インストール

$ cd
$ mkdir build-gcc-h8300-elf
$ cd build-gcc-h8300-elf
$ /usr/local/src/gnu/gcc-3.3.3/configure --prefix=/usr/local/gnu \
  --target=h8300-elf --disable-nls --enable-languages=c,c++  \
  --with-gnu-as --with-gnu-ld --with-newlib                  \
  --with-gxx-include-dir=/usr/local/gnu/h8300-elf/include    \
  -v 2>&1 | tee configure.out
$ make all 2>&1 | tee make_all.out
$ make install 2>&1 | tee make_install.out
$ h8300-elf-gcc -v

5.2.4 gdb(Insight)のコンフィグレーション、ビルド、インストール

 図8のようにgdb(Insight)のコンフィグレーション、ビルド、インストールを行います。ここでは、Insightの例を示します。

図8. gdb(Insight)のコンフィグレーション、ビルド、インストール

$ cd
$ mkdir build-gdb-h8300-elf
$ cd build-gdb-h8300-elf
$ /usr/local/src/gnu/insight-6.0/configure --prefix=/usr/local/gnu \
  --target=h8300-elf -v 2>&1 | tee configure.out
$ make all 2>&1 | tee make_all.out
$ make install 2>&1 | tee make_install.out
$ h8300-elf-gdb -v


[ 次のページ | 前のページ | 目次へ ]
お問い合わせは info@embedded.jp まで