連載
» 2005年10月18日 00時00分 公開

組み込みLinux開発入門(3):クロス開発環境の整備とRAMディスクの書き換え (1/3)

まずクロス開発環境を整備してPC上でARM用バイナリをコンパイルできるようにし、そのプログラムをArmadilloに組み込む手順を解説する

[渡辺 武夫 イーエルティ,@IT MONOist]

 前回は、Armadillo-9とホストPCを接続して、シリアルポート経由でターゲット(Armadillo-9)のLinuxにアクセスするところまで解説しました。

 今回は、Armadillo-9に自作アプリケーションを組み込む方法について解説します。また、Armadillo-9上のディスクイメージを書き換えて、電源投入時に自作プログラムが自動起動するようにしてみます。この手順をマスターすれば、Armadillo-9上のLinux環境を自由にカスタマイズできるようになります。

クロス開発環境の整備

 まず、Armadillo-9に組み込むアプリケーションを作成するのに必要な開発環境を準備しましょう。必要な道具は、ホストPC(OS:Red Hat Linux 9)とArmadillo-9付属のCD-ROMです。このCD-ROMに収録されているクロスコンパイラを、ホストPCのLinuxにインストールします。

クロスコンパイラのインストール

 では、作業を始めましょう。以下、インストール作業はroot権限を持ったユーザーで実施してください。

 最初に、CD-ROMをマウントします。Linuxの設定によっては、自動的にマウントが行われる場合があります。デバイスファイル名(/dev/cdrom)やマウントポイントはディストリビューションなどによって異なる場合があります。自分の環境に応じて適宜読み替えてください。

# mount /dev/cdrom /mnt/cdrom

 CD-ROMには、各種ファイルがRPMパッケージで収録されています。rpmコマンドを用いて必要なパッケージのインストールを行います。

# cd /mnt/cdrom/cross-dev/rpm
# rpm -i binutils-arm-linux-2.14.90.0.7-8.i386.rpm
# rpm -i gcc-arm-linux-3.4.1-4sarg1.i386.rpm
rpmコマンド実行例

 なお、rpmコマンド実行時に警告メッセージが出る場合があります。インストールファイルに標準で適用されているグループ情報などの不一致によるものなので、無視しても問題ありません。

補足 CD-ROM収録パッケージ一覧

  参考までに、Armadillo-9付属CD-ROMの/cross-dev/rpmディレクトリに収録されているファイルを紹介します。

binutils-arm-linux-2.14.90.0.7-8.i386.rpm
クロスアセンブラ、ライブラリアン(総称名:binutils)
cpp-arm-linux-3.4.1-4sarge1.i386.rpm
C言語クロスプリプロセッサ
gcc-arm-linux-3.4.1-4sarge1.i386.rpm
C言語クロスコンパイラ
linux-kernel-headers-arm-cross-2.5.999_test7_bk-16.noarch.rpm
クロスコンパイル用ヘッダファイル一式
libc6-arm-cross-2.3.2.ds1-13.noarch.rpm
クロスCライブラリ:Shared libraries and Timezone data
libc6-dev-arm-cross-2.3.2.ds1-13.noarch.rpm
クロスGNU Cライブラリ:Development Libraries and Header Files
libc6-pic-arm-cross-2.3.2.ds1-13.noarch.rpm
クロスGNU Cライブラリ:PIC archive library
libc6-prof-arm-cross-2.3.2.ds1-13.noarch.rpm
クロスGNU Cライブラリ:Profiling Libraries
libdb1-compat-arm-cross-2.1.3-7.noarch.rpm
クロス用Berkeleyデータベースルーチンライブラリ
libgcc1-arm-cross-3.4.1-4sarge1.i386.rpm
クロスGCCサポートライブラリ

以下のファイルは、C++機能を使用する場合に必要になります。今回は同言語を使用しないため、特にインストールする必要はありません。

g++--arm-linux-3.4.1-4sarge1.i386.rpm
C++クロスコンパイラ
libstdc++6-0-arm-cross-3.4.1-4sarge1.i386.rpm
クロスGNUスタンダードC++ライブラリ(v3)
libstdc++6-0-dbg-arm-cross-3.4.1-4sarge1.i386.rpm
クロスGNUスタンダードC++ ライブラリ(v3)(debugging files)
libstdc++6-0-dev-arm-cross-3.4.1-4sarge1.i386.rpm
クロスGNUスタンダードC++ライブラリ(v3)(development files)
libstdc++6-0-pic-arm-cross-3.4.1-4sarge1.i386.rpm
クロスGNUスタンダードC++ライブラリ(v3)(shared library subset kit)

クロスコンパイラのインストール確認

 インストールが正常に完了したかどうかの確認は、クロスコンパイラのコマンドが使用可能かどうかで判断可能です。

# arm-linux-gcc -v
Configure………
gcc version 3.4.1 (Debian 3.4.1-4sarge1)
正常にインストールされた場合

# arm-linux-gcc -v
bash: arm-linux-gcc: command not found
インストールができていない場合

 参考用に、コマンド名と機能の一部を抜粋します。

  arm-linux-gcc Cクロスコンパイラ
  arm-linux-as クロスアセンブラ
  arm-linux-ld クロスリンカ

コラム クロスコンパイラの構築

  Armadillo-9にはすぐ使えるクロスコンパイラが付属しており、環境構築は非常に簡単です。ただし、実際の組み込みLinux開発においては、クロスコンパイラを自分でコンパイル(ビルド)して構築することもあります。いずれ詳述する機会を設けたいと思いますが、ここで簡単にクロスコンパイラを自分で構築する方法を紹介しておきます。

最低限必要なもの binutils、GCCのソースコード。これらはGNUサイト(http://www.gnu.org/)から入手可能
組み込みLinuxの
ソースコード
Cコンパイラ(GCC)をビルドする際に必要なヘッダファイルを参照するため

binutilsとGCCのソースコードを展開した後、configureにて環境設定を行います。この際に注意しなければいけないのは、単純にconfigureを行うとセルフコンパイラのビルド設定になってしまうので、必ずクロスコンパイラ設定(同時に対象とするターゲットCPU種別の設定)をすることです。

同時に、コマンドプリフィックスを指定し、セルフコンパイラと異なるコマンド名にする設定を行うのが理想です。Armadillo-9付属のクロスコンパイラもこの設定がなされているため、gccなどのコマンド名には頭に「arm-linux-」という文字列が付いています。

configureが終わったらビルド(make)を行います。前述したとおり、GCCのビルドの際は組み込みLinuxのヘッダファイルを必要とすることがあるので要注意です。

概要だけを見るとこれだけの作業で構築可能なのですが、実際にはGCCのビルドにかなり手間が掛かるので、腰を据えて行うことをお勧めします。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.