開発環境の整備と運用

Armadillo用の標準開発環境をATDE(Atmark Techno Development Environment)といいます。ATDEは仮想マシン上で動作するLinuxデスクトップ環境(Debian GNU/Linux)で、開発に必要なソフトウェア一式がプリインストールされています。ATDEはVMwareイメージとして提供されているため、作業用PCのOSがWindowsであるかLinuxであるかを問わず、VMware Playerを実行できる環境であれば、ATDEを実行することができます。

本書執筆時点でのArmadillo-400シリーズ用の標準開発環境は、ATDE3となっています。ATDE3のベースはDebian GNU/Linux 5.0 (コードネーム "lenny")です。ATDE3 のインストール及び基本的な設定方法については、第1部「開発環境の構築」を参照してください。

この章では、第1部で触れなかったATDE3の設定方法や運用方法について説明をおこないます。また、ATDE3と同じ環境を別のLinux PCに構築する方法についても説明します。

2.1. ATDE3でUSBメモリを使用する

この章では、作業用PCに接続したUSBメモリをATDE3で使用する方法について説明します。シリアルポートや共有フォルダを使う方法は、第1部を参照してください。

2.1.1. ホストOSがWindowsの場合

本章では、作業用PCのOSがWindowsの場合について説明します。作業用PCのOSがLinuxの場合は、「ホストOSがLinuxの場合」を参照してください。

まず、USBメモリを作業用PCに接続してください。USBメモリが作業用PCで認識されると、VMware Playerの「仮想マシン」-「取り外し可能デバイス」メニューに「デバイス名[5]」が追加されます。「接続(ホストから切断)」と表示されている場合は、メニューを選択してください[6]。そうすると、VMware Player側(ATDE3)でUSBメモリを使用できるようになります。

USBメモリの接続

図2.1 USBメモリの接続


しばらくしてATDE3がUSBメモリを認識すると、USBメモリは自動で/media/diskディレクトリにマウントされます。また、以下のようにデスクトップにUSBメモリのアイコンが作成され、Nautilus(ファイルマネージャ[7])が起動します。

USBメモリのアイコン

図2.2 USBメモリのアイコン


[ティップ]USBメモリを切断する

VMware Player側でUSBメモリを使用している間は、作業用PCでは使用できません。作業用PCでUSBメモリを使用する場合は、一度VMware PlayerからUSBメモリを切断する必要があります。

VMware PlayerからUSBメモリを切断するにはVMware Playerの「仮想マシン」- 「取り外し可能デバイス」-「デバイス名」-「切断(ホストに接続)」メニューを選択してください。

2.1.2. ホストOSがLinuxの場合

本章では、作業用PCのOSがLinuxの場合について説明します。作業用PCのOSがWindowsの場合は、「ホストOSがWindowsの場合」 を参照してください。

まず、USBメモリを作業用PCに接続してください。USBメモリが作業用PCで認識されると、VMware Playerの「VM」-「Removable Devices」メニューに「デバイス名[8]」が追加されます。「Connect」と表示されている場合は、メニューを選択してください[9]。そうすると、VMware Player側(ATDE3)でUSBメモリを使用できるようになります。

USBメモリの接続

図2.3 USBメモリの接続


しばらくしてATDE3がUSBメモリを認識すると、USBメモリは自動で/media/diskディレクトリにマウントされます。また、以下のようにデスクトップにUSBメモリのアイコンが作成され、Nautilus(ファイルマネージャ[10])が起動します。

USBメモリのアイコン

図2.4 USBメモリのアイコン


[ティップ]USBメモリを切断する

VMware Player側でUSBメモリを使用している間は、作業用PCでは使用できません。作業用PCでUSBメモリを使用する場合は、一度VMware PlayerからUSBメモリを切断する必要があります。

VMware PlayerからUSBメモリを切断するにはVMware Playerの「VM」-「Removable Devices」-「デバイス名」-「Disconnect」メニューを選択してください。

2.2. ATDE3にソフトウェアを追加する

Debian GNU/Linuxではアプリケーションプログラムやライブラリなどのソフトウェアの管理はDebianパッケージと呼ばれるパッケージ単位で行います。この章では、Debianパッケージを検索し、それをATDE3へインストールする方法について説明します。

2.2.1. ソフトウェアが含まれるパッケージを検索する

まず、インストールしたいアプリケーションプログラムやライブラリが含まれるパッケージのパッケージ名を知る必要があります。パッケージ名を調べる一般的な方法には、以下のものがあります。

  • Debianのパッケージページ[11]から検索する。
  • apt-cache searchを使用しパッケージを検索する。
  • すでにインストールされているファイルからパッケージ名を検索する。

本章ではこれらの方法について、説明します。

2.2.1.1. Debianパッケージページで検索する

debian.org(Debian GNU/Linuxの公式サイト)のパッケージページでDebianパッケージの検索をすることができます。Debianのパッケージページでのパッケージの検索方法としては以下の方法があります。

  • パッケージ名
  • パッケージ説明文
  • ソースパッケージ名
  • パッケージに含まれるファイルのパス

それぞれの検索方法でパッケージを選択し、ダウンロードすることができます。

[注記]Debian GNU/Linuxのバージョンとアーキテクチャ

Debian GNU/Linuxには安定版(stable)、テスト版(testing)、不安定版(unstable)、旧安定版(oldstable)というリリースが存在します。それぞれ用途・更新頻度・サポート体制が違います。

ATDE3では、2011年3月現在の旧安定版(oldstable)であるDebian GNU/Linux 5.0(コードネーム "lenny")をベースに開発環境を構築しています。

また、Debianでは各種アーキテクチャ用のパッケージが提供されています。

Intel x86系CPU用のアーキテクチャ名はi386です。ATDE3では、このアーキテクチャを使用します。

ARM CPU用には、armとarmelの二つのアーキテクチャがあります。それぞれABIが異なります。armがOABI用、armelがEABI用のアーキテクチャです。Armadillo-400シリーズはEABIですので、armelアーキテクチャ用のパッケージを使用します。

2.2.1.2. apt-cacheコマンドで検索する

apt-cacheコマンドの引数にsearchを付けて実行することでパッケージの検索ができます。パッケージ名やパッケージの説明に対して検索します。パッケージ名やパッケージの説明に対して検索できます。

例えば「coreutils」というlsコマンドやcpコマンドなどの基本的なコマンドが含まれるパッケージを検索する場合は以下のコマンドを実行します。

[ATDE ~]$ apt-cache search coreutils
realpath - Return the canonicalized absolute pathname
python-sepolgen - A Python module used in SELinux policy generation
policycoreutils - SELinux コアポリシーユーティリティ
coreutils - GNU コアユーティリティ
bsdmainutils - FreeBSD 由来のユーティリティ集

図2.5 apt-cache searchによるパッケージの検索


一番左に表示されているものが、パッケージ名です。

apt-cacheコマンドには他にもいろいろな機能が備わっています。詳しくはman apt-cacheを参照してください。

2.2.1.3. すでにインストールされているパッケージから逆引きする

ATDE3にはインストールされていないソフトウェアが、Debian GNU/Linux 5.0などがインストールされている作業用PCには入っている場合があります。この章では、ファイル名やコマンド名は分かるが、パッケージ名が分からないときに便利なコマンドを紹介します。

インストールされているファイル名や、コマンド名からパッケージを調べるにはdpkgコマンドに-Sオプションを付けて使用します。ここでは例としてlsコマンドがどのパッケージに含まれているかを調べます。

[PC ~]$ which ls
/bin/ls
[PC ~]$ dpkg -S /bin/ls
coreutils: /bin/ls

図2.6 lsコマンドが含まれているパッケージを調べる


whichコマンドを使ってlsコマンドのパスを調べた結果を、dpkgコマンドの引数として指定しています。dpkg -Sはファイルのパスで検索してくれます。ファイル名ではなく、パスを使用したほうが検索結果が少なく便利です。

dpkg -S /bin/lsを実行した結果から、lsコマンドはcoreutilsパッケージに含まれていることが分かります。

2.2.2. パッケージをインストールする

インストールしたいパッケージのパッケージ名が分かれば、apt-get installでパッケージをインストールできます。apt-get installは、指定されたパッケージ名のパッケージをダウンロードし、インストールまでを行います。

例として、FTPクライアントのlftpパッケージをインストールする場合、図2.7「apt-get installによるパッケージのインストール」のようになります[12]

[ATDE ~]$ sudo apt-get install lftp
[sudo] password for atmark:
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが新たにインストールされます:
  lftp
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
587kB 中 0B のアーカイブを取得する必要があります。
この操作後に追加で 1540kB のディスク容量が消費されます。
取得:1 http://ftp.jp.debian.org lenny/main lftp 3.7.3-1+lenny1 [587kB]
587kB を 0s で取得しました (789kB/s)
未選択パッケージ lftp を選択しています。
(データベースを読み込んでいます ... 現在 92123 個のファイルとディレクトリがインストールされています。)
(.../lftp_3.7.3-1+lenny1_i386.deb から) lftp を展開しています...
man-db のトリガを処理しています ...
lftp (3.7.3-1+lenny1) を設定しています ...

図2.7 apt-get installによるパッケージのインストール


apt-getコマンドにはいろいろな機能が備わっています。詳しくはman apt-getを参照してください。

2.3. ATDE3にクロス開発用ライブラリをインストールする

Atmark Distに含まれないアプリケーションやライブラリをビルドする際に、付属DVDやダウンロードサイトには用意されていないライブラリパッケージが必要になることがあります。ここでは、クロス開発用ライブラリパッケージの作成方法およびそのインストール方法を紹介します。

2.3.1. dpkg-crossコマンドを使用する

まず、作成したいクロス開発用パッケージの元となるライブラリパッケージを取得します。取得するパッケージは、アーキテクチャをターゲットに、Debianディストリビューションのバージョンを開発環境に合わせる必要があります。Armadillo-400シリーズでは、アーキテクチャはarmel、Debianディストリビューションのバージョンは lenny (2010年9月現在の安定版)になります。

例えば、libjpeg62の場合、ダウンロードするファイルは「libjpeg62_[version]_armel.deb」になります。Debianパッケージは、Debianのパッケージページから検索して取得することができます。

取得したライブラリパッケージをクロス開発用に変換するには、dpkg-crossコマンドを使用します。

[ATDE ~]$ dpkg-cross --build --arch armel libjpeg62_[version]_armel.deb
[ATDE ~]$ ls
libjpeg62-armel-cross_[version]_all.deb libjpeg62_[version]_armel.deb

--buildオプションはクロス開発用に変換されたDebianパッケージを作成することを意味します。--archオプションにはアーキテクチャを指定します。最後の引数には変換したいライブラリパッケージを指定します。

dpkg-crossはクロス開発用のライブラリパッケージパッケージの「libjpeg62-armel-cross_[version] _all.deb」を作成します。ファイル名の「armel-cross」はarmelクロス開発用を意味し、「_all」はすべてのアーキテクチャの開発用PCにインストールすることができることを意味します。

次に、dpkgコマンドを-iオプションを付けて実行し、クロス開発用に変換したパッケージをインストールします。

[ATDE ~]$ sudo dpkg -i libjpeg62-armel-cross_[version]_all.deb

dpkg-cross --build --arch armelで作成したクロス開発用ライブラリパッケージをインストールすると、ファイルは/usr/arm-linux-gnueabiディレクトリ以下にインストールされます。ライブラリファイルは/usr/arm-linux-gnueabi/libディレクトリに、ヘッダファイルは/usr/arm-linux-gnueabi/includeディレクトリに置かれます。

[ティップ]パッケージ名の最後が-devのパッケージ

パッケージ名の最後が-devになっているパッケージは開発用のものです。開発用パッケージにはヘッダーファイルなどが入っています。例えばlibjpeg62パッケージの開発用パッケージ名は、libjpeg62-devになります。libjpeg62を使用するソースコードをコンパイルする場合は、libjpeg62-devパッケージも必要になります。

クロス開発を行う場合はこのようなケースが多いので、新しいクロス開発用パッケージをインストールする場合、開発用パッケージもインストールしておくのが良いでしょう。

[ティップ]アプリケーションの場合

アプリケーションのパッケージには、ライブラリファイルもヘッダーファイルも含まれていないので、dpkg-crossコマンドでクロス開発用パッケージに変換することができません[13]

ARM用のDebianパッケージに含まれる、アプリケーションの実行ファイルをArmadilloで動作させたい場合、まず、dpkg -xを実行して、パッケージに入っているファイルを取り出します。該当のファイルを探し、Armadilloのユーザーランドに配置するだけでアプリケーションを使用することができます。

このようにして配置したアプリケーションを使用する場合に、ライブラリや設定ファイルが必要な場合もあります。うまく動作しなかった場合は、パッケージの依存関係や、設定ファイルの有無を調べてください。

また、4章Armadillo上にDebian GNU/Linuxを構築するで紹介する手順を行ない、Armadillo上にDebian GNU/Linuxを構築することでArmadillo上でもapt-getコマンドが使用できるようになります。

2.3.2. apt-crossコマンドを使用する

apt-crossコマンドを使用すると、「dpkg-crossコマンドを使用する」で紹介した一連の作業を1つのコマンドで行うことができます。

[ATDE ~]$ apt-cross --arch armel --suite lenny --install libjpeg62

図2.8 apt-crossコマンド


--archオプションにはアーキテクチャを指定します。--suiteオプションにはDebian ディストリビューションのバージョンを指定します。--installオプションは取得/変換したパッケージをインストールすることを意味します。最後の引数には、パッケージ名を指定します。

2.4. ATDE3と同じ環境を構築する

ATDE3は仮想マシン上で動作するため、メンテナンスが簡単などのメリットがありますが、その分動作が遅いというデメリットもあります。Debian GNU/Linux 5.0がインストールされたPCであれば、ATDE3と同様の開発用環境を構築することもできます。ここでは、その手順について説明します。

まず、/etc/apt/sources.list.d/atmark.source.listに以下の内容を追加してください。

deb http://download.atmark-techno.com/debian lenny/

続いて、以下のコマンドを実行し、パッケージの情報の更新をしてください。

[PC ~]$ sudo apt-get update

最後に、a440-development-environmentパッケージをインストールしてください。そうすると、Armadilloの開発に必要なパッケージが全てインストールされます。

[PC ~]$ sudo apt-get install a440-development-environment


[5] USBメモリの名前が表示されます。

[6] 「切断(ホストに接続)」と表示されている場合は、すでにUSBメモリがVMware Playerに接続されていますので、この手順は不要です。

[7] ファイルシステムを扱うためのユーザーインターフェースを提供するソフトウェア。ファイラーと呼ばれることもあります。Windowsではエクスプローラなどがあります。

[8] USBメモリの名前が表示されます。

[9] 「Disconnect」と表示されている場合は、すでにUSBメモリがVMware Playerに接続されていますので、この手順は不要です。

[10] ファイルシステムを扱うためのユーザーインターフェースを提供するソフトウェア。ファイラーと呼ばれることもあります。Windowsではエクスプローラなどがあります。

[12] 第1部の手順をすべて実行している場合はすでにlftpがインストールされています。

[13] --convert-anywayオプションを使用して、中身が空のダミーパッケージを作成することはできます。