クロス開発ツールのインストール - Debian編

クロス開発ツールをDebianホストにインストールする手順です。

1. 対象OS

  • Debian GNU/Linux 4.0 etch (x86)
  • Debian GNU/Linux sid (x86)

2. クロスツールチェインのインストール

クロスのgccやbinutilsをインストールする手順です。

株式会社パイロンが独自に配布する非公式なDebianパッケージです。これらのパッケージについてDebianプロジェクトへの質問はお控えください。

/etc/apt/sources.listに以下のapt-lineを追加します。

deb http://downloads.pylone.jp/cross-toolchain/deb ./

(まだ行っていなければ) pylone.jp の鍵を導入します。

# wget http://pylone.jp/pubkey.asc -O - | apt-key add -

パッケージ一覧を更新してから、ツールチェイン一式をインストールします。

# aptitude update
# aptitude install gcc-4.1-arm-linux-gnu

必要であれば C++ コンパイラや gdb もインストールします。

# aptitude install g++-4.1-arm-linux-gnu
# aptitude install gdb-arm-linux-gnu

インストールされるパッケージ一覧です。

名前バージョン
binutils-arm-linux-gnu2.17-3pylone0
cpp-4.1-arm-linux-gnu4.1.1-21pylone1
g++-4.1-arm-linux-gnu4.1.1-21pylone1
gcc-4.1-arm-linux-gnu4.1.1-21pylone1
gcc-4.1-arm-linux-gnu-base4.1.1-21pylone1
gdb-arm-linux-gnu6.6.dfsg.90.20070912-1
libc6-arm-cross2.3.6.ds1-13etch2
libc6-dev-arm-cross2.3.6.ds1-13etch2
libgcc1-arm-cross1:4.1.1-21pylone1
libstdc++6-4.1-dev-arm-cross4.1.1-21pylone1
libstdc++6-arm-cross4.1.1-21pylone1
linux-kernel-headers-arm-cross2.6.18-7

3. u-boot-tools

u-boot-toolsパッケージをインストールする手順です。

u-boot-toolsにはLinuxカーネルやinitrdをU-Boot形式に変換するmkimageコマンドなどが含まれます。Linuxカーネルをソースからビルドする場合や、initrdイメージを作る場合は u-boot-toolsをインストールしてください。

Debian sid では mkimage コマンドが uboot-mkimage パッケージによって提供されています。 u-boot-tools パッケージをインストールする必要はありません。

/etc/apt/sources.list に以下を加えます。

deb http://downloads.pylone.jp/tools/deb ./
deb-src http://downloads.pylone.jp/tools/deb ./

(まだ行っていなければ)アーカイブの鍵を導入します。

# wget http://pylone.jp/pubkey.asc -O - | apt-key add -

入手可能なパッケージの一覧を更新します。

# aptitude update

u-boot-tools をインストールします。

# aptitude install u-boot-tools

4. mtd-tools

mtd-toolsをインストールする手順です。

NANDに置くルートファイルシステムのjffs2イメージをホスト上で作成する場合に必要になります。

入手可能なパッケージの一覧を更新します。

# aptitude update

mtd-tools をインストールします。

# aptitude install mtd-tools

5. dpkg-cross

dpkg-crossはターゲットアーキテクチャ用のパッケージをホストにインストールするためのツールです。

dpkg-crossを使えば、クロスコンパイルに必要なライブラリとヘッダファイルを比較的簡単に用意することができます。

以降では dpkg-crossのインストールと簡単な使い方を説明します。

5.1. dpkg-cross のインストール

# aptitude install dpkg-cross

5.2. dpkg-cross の使い方

armのlibcurses5をホストにインストールする場合を例に説明します。

まず、armのlibcurses5をダウンロードします。

$ wget http://ftp.jp.debian.org/debian/pool/main/n/ncurses/libncurses5_5.5-5_arm.deb

次に dpkg-crossで変換します。-aオプションでアーキテクチャを指定し、-bオプションでパッケージの変換を行います。

$ dpkg-cross -a arm -b libncurses5_5.5-5_arm.deb

変換されたパッケージ libncurses5-arm-cross_5.5-5_all.debが出来上がります。

変換後のパッケージ名には "-arm-cross" が追加されます。

最後に、変換されたパッケージをdpkgでインストールします。

# dpkg -i libncurses5-arm-cross_5.5-5_all.deb

dpkg-crossの-iオプションで変換とインストールを同時に行うこともできます。

# dpkg-cross -a arm -i libncurses5_5.5-5_arm.deb

アンインストールは-arm-crossを追加したパッケージ名を指定します。

# dpkg --remove libncurses5-arm-cross

同じ要領でlibncurses5-devもインストールすれば libncurses5を使ったアプリケーションをクロスコンパイルできます。

/etc/dpkg-cross/cross-compileのdefault_arch でアーキテクチャを指定すれば、dpkg-crossの-aオプションが省略できます。

6. apt-cross

apt-crossはdpkg-crossのAPT フロントエンドです。dpkg-crossではパッケージの取得を手動で行う必要がありますが、apt-crossはダウンロードからインストールまでを一度に行うことができます。

6.1. apt-cross のインストール

apt-crossのインストールは以下の通りです。

# aptitude install apt-cross

6.2. apt-cross の使い方

dpkg-crossと同じくlibncurses5を例にapt-crossの使い方を説明します。

まず、取得可能なパッケージの一覧を更新します。

$ apt-cross -a arm -S stable -m http://ftp.jp.debian.org/debian/ --update

-aオプションはアーキテクチャの指定です。-SはSuiteです。Bishopであればetchが対象なので-S stableとなります。-mはレポジトリのミラーです。

ダウンロードからインストールまでを一度に行うのであれば、以下のようにします。

# apt-cross -a arm -S stable -m http://ftp.jp.debian.org/debian/ --install libncurses5

ダウンロードのみの場合です。

# apt-cross -a arm -S stable -m http://ftp.jp.debian.org/debian/ -get libncurses5

削除の場合です。

# apt-cross -a arm --remove libncurses5

apt-crossはdpkg-crossのAPTフロントエンドですが、パッケージ間の依存関係を 扱うことはできせん。現在、作者のNeil Williams氏が依存関係解決の改良 を含めて apt-crossを書き直しているようです。

cc