CodeZine(コードジン)

特集ページ一覧

【第2回】ホスト

  • LINEで送る
  • このエントリーをはてなブックマークに追加

目次

GNUとフリーソフトウェア、オープンソースソフト

 GNUは無償、無保証のソフトをソースリストで公開しています。このソースリストで公開していることから、オープンソースソフトと混同されることがしばしばありますが、GNUは自分らが公開しているソフトウェアをフリーソフトウェアとしています。これらの違いは、筆者よりはるかに詳しい方がウェブの各所で説明されていますので、興味のある方は各自でお調べください。

 連載第2回の今回は、このGNUソフトウェアのクロスコンパイラGCCとデバッガGDB(上記の1.と2.)の入手とインストールです。この辺は、プログラミングを生業とされる方々には馴染み深い範囲かと思います。

GCC/GDB(Windows)

 Windowsでは、自分自身のソフトウェアのコンパイルは通常状態では用意されていません。Visual C++やCygwinで自分でビルドと言う手もありますが、あまり一般的ではありません。そこでコンパイル済みのバイナリを利用します。

入手とインストール

 Windows版のARMのクロスコンパイラは下記から入手できます。

 ですが、最新版で生成したRoboShellのバイナリは動作しません。以前のバージョンのクロスコンパイラを利用します。

 以前のバージョンのクロスコンパイラはTeamKNOxのサイトからダウンロードできます。適当なディレクトリに展開してパスを通しておきます。DOSプロンプトから、

arm-none-eabi-gcc[Enter]

 を実行し、

arm-none-eabi-gcc: no input files

 と表示されれば OK です。

 gdbも同梱されていますので、展開すれば使えるようになります。

arm-none-eabi-gdb[Enter]

 を実行し、

GNU gdb (CodeSourcery ARM Sourcery G++ 2006q3-26) 6.5.50.20060822-cvs
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and
 you are welcome to change it and/or distribute copies of it under 
certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for 
details.
This GDB was configured as "--host=i686-mingw32 --target=arm-none-eabi".
For bug reporting instructions, please see:
.

(gdb)

 と表示されればOKです。

 quitでプログラムを終了します。

GCC/GDB(UNIX系OS)

 現在、一般的に利用されているUNIX系OSと言えば、LinuxとMacOSXでしょう。これらの環境では標準的にコンパイラが用意されているので、本家GNUからtarボールを入手して自分自身でビルドすることができます。

Linux

 筆者はLinux環境としてFedora Core(FC)7を使っています。インストールはDVDでブートディスクを作成した後にネットワークで最新環境に保つようにしています。

MacOSX

 Tigerを想定しています。

 MacOSXの場合はXCODEが必須です。予め、下記からダウンロードしてインストールしておきます。ダウンロードするためにはユーザ登録が必要になりますので、こちらは各自で済ませておいてください。

gccの入手

 GNUや関連サイトから下記のファイルをダウンロードしておきます。

  1. binutils-2.18.tar.gz
  2. gcc-4.2.1.tar.bz2
  3. gcc-g++-4.2.1.tar.bz2
  4. newlib-1.15.0.tar.gz

 最近ではプレリリース版である4.2.3がダウンロード出来るようになっています。好みでダウンロードすればよいでしょう。本稿でクロスコンパイラのビルドの方法をマスターすれば、常に最新版でソフト開発を行うことが出来るようになり、いわゆる GCCの「おっかけ」になることが出来ます。

gccのインストール

 ビルドの仕方は、LinuxもMacOSXもほぼ共通です。インストールは全てroot権限で行っておくと良いでしょう。全てのファイルは/tmpディレクトリにダウンロードしておきますが、MacOSXでは起動時に/tmpディレクトリの内容は全て消去されてしまうので注意してください。

1.binutils
tar xvzf binutils-2.18.tar.gz 
./configure --target=arm-elf --prefix=/usr/local/arm 
make install
2.newlibの展開

 gccのメイク時にnewlibのヘッダファイルを使用するので、展開しておきます。ここでは、/tmp以下に展開します。

 また、gcc/g++のメイクの際に、newlibのヘッダファイルの位置を指定しますが、うまく動作しないため/usr/local/arm/includeというシンボリックリンクを作成しておきます。

tar xvzf newlib-1.15.0.tar.gz 
cd newlib-1.15.0 
ln -s /tmp/newlib-1.15.0/newlib/libc/include /usr/local/arm/include
3.gcc/g++ 1回目

 デフォルトでインストールされているgcc(x86用)では、libsspを有効にしてconfigureを実行するとlibsspのリンクチェックの際に、newlibのcrt0.oのリンクに失敗するため、まずはlibsspを使用しないARM用のクロスコンパイラを作成します。

export PATH=$PATH:/usr/local/arm/bin 
bzip2 -dc gcc-4.2.1.tar.bz2 | tar xvf - 
bzip2 -dc gcc-g++-4.2.1.tar.bz2 | tar xvf - 
cd gcc-4.2.1 

./configure --target=arm-elf --prefix=/usr/local/arm/ --enable- languages=c,c++ --with-cpu=arm7tdmi --with-newlib --with-headers= /tmp/newlib-1.15.0/newlib/libc/include/ --disable-ada --disable-libssp  make  make install
4.newlib 1回目

 メイクしたlibssp無効のコンパイラを使用して、newlibをメイクします。なお、make installの前に、シンボリックリンクを削除しておきます。

cd /tmp 
./configure --target=arm-elf --prefix=/usr/local/arm/ --disable-ada --disable-libssp 
make 
rm /usr/local/arm/include
5.gcc/g++ 2回目

 1回目でメイクしたlibssp無効のコンパイラを使用して、libssp有効のコンパイラをメイクします。なお、make installの前に、1回目にメイクしたコンパイラをアンインストールします。

export PATH=$PATH:/usr/local/arm/bin 
mv gcc-4.1.1 gcc-4.1.1-1st 
bzip2 -dc gcc-4.2.1.tar.bz2 | tar xvf - 
bzip2 -dc gcc-g++-4.2.1.tar.bz2 | tar xvf - 
cd gcc-4.2.1 

./configure --target=arm-elf --prefix=/usr/local/arm/ --enable -languages=c,c++ --with-cpu=arm7tdmi --with-newlib --with-headers= /tmp/newlib-1.15.0/newlib/libc/include/   make  make uninstall  注)ルールがない場合あり  make install
6.newlib 2回目

 メイクしたlibssp有効のコンパイラを使用して、newlibをメイクします。

mv newlib-1.15.0 newlib-1.15.0-1st 
tar xvzf newlib-1.15.0.tar.gz 
cd newlib-1.15.0 
./configure --target=arm-elf --prefix=/usr/local/arm/ 
make 
make uninstall  注)ルールがない場合あり 
make install

  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:Eclipse/ARMプロセッサによる組込み開発

もっと読む

著者プロフィール

  • 大橋 修(大宮技研合同会社)(オオハシ オサム)

    大宮技研 エグゼクティブ・エンジニア。 都立高専電気工学科卒業後、日本精工(株)でエアバッグの制御ソフトウェア開発、ボッシュ(株)にてエンジンマネージメントシステム開発、適合ツールの開発、プロジェクトマネージメント、ノキアにてシンビアンOS用ミドルウェアS60の開発などをおこなう。インテルを経て、...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5