BusyBoxをクロスコンパイルする環境を構築しよういますぐ使える! BusyBox活用術(1)(2/3 ページ)

» 2008年07月02日 00時00分 公開
[宍道 洋 busybox同好会,@IT MONOist]

クロスコンパイル環境の構築

 それではBusyBoxのコンパイルに必要な環境を整えていきましょう。ここでは、今後組み込み機器に実装することを目的に、クロスコンパイル環境を構築することにします。

 クロスコンパイルとは、ターゲットとなる組み込み機器用の実行ファイルをホストとなるコンピュータで構築することです。

 組み込み機器では、普通PCで使われるIntelやAMDのいわゆる“x86”系以外のCPUが使われることが多いのですが、CPUパワーやメモリなどのリソースが少ないため、組み込み機器自体に開発環境を載せられないことがほとんどです。そのため、リソースの豊富なホストPC上に開発環境を用意して開発していきます(図1)。


ホストとターゲット 図1 ホストとターゲット

 今回用意する開発環境は、Linuxが動作するホスト上に構築していきます。

 ターゲット用の組み込みLinuxをホスト上で開発するためのクロスコンパイル環境には、以下のものが必要となります。

  • binutils 
    オブジェクトやライブラリ、実行ファイルなどのバイナリファイルを扱うツール群
  • コンパイラ 
    GNU Cコンパイラ(GCC)
  • Cライブラリ
  • Linuxのヘッダファイル

 これらを1つ1つ構築するという方法もありますが、結構面倒です。そこでここでは、「Buildroot」というツールを使って構築することにします。このBuildrootというのはクロスコンパイル環境を構築したり、それを利用してターゲットのファイルシステムを構築したりできるものです。

 それでは、Buildrootを使って構築していきましょう。

 まず、Buildrootをダウンロードします。Buildrootは特に安定したバージョンがなく、Subversionを使ってソースコードを取得するか、ダウンロードサイトDaily Snapshotsより最新のアーカイブをダウンロードすることになります。そのため、最新アーカイブは日によっては構築に失敗することもありますので、その場合は少し前のものを利用したりします。

 原稿執筆時点では“buildroot-20080601.tar.bz2”でしたので、ここではこれを使用することにします。

 以下のように、作業用のディレクトリにダウンロードしたファイルを展開して、そのディレクトリに入ります。

$ tar jxf buildroot-20080601.tar.bz2
$ cd buildroot 

 続いて以下のコマンドを入力すると、

$ make menuconfig 

 次のような画面が表示されますので、Buildrootの設定を行います(画面1)。

[Buildroot Configuration]画面 画面1 [Buildroot Configuration]画面

 はじめに、[Target Architecture]を選んで、ARMやMIPS、PowerPCなどさまざまな中から、使いたいアーキテクチャを選択します。ここでは、例として「arm」を選択します(画面2)。

[Target Architecture]画面 画面2 [Target Architecture]画面

 続いて、クロスコンパイル環境を置く場所を設定します。[Build Options]画面で、[Toolchain and header file location?]を選択して格納したいディレクトリを設定します。ここでは、例としてホームディレクトリ以下の“cross”ディレクトリ(/home/shinji/cross)に設定します(画面3)。

[Build options]画面 画面3 [Build options]画面

 次の[Package Selection for the target]画面ですが、今回はまだBusyBoxをコンパイルしないので、BusyBoxの項目にあるチェックを「off」にします(画面4)。

[Package Selection for the target]画面 画面4 [Package Selection for the target]画面

 最後に[Target filesystem options]画面で、すべての項目のチェックを「off」にした後、[Exit]で終了します。すると、以下のような画面が表示されるので、「Yes」を選択して終了します。

「Yes」を選択して終了 画面5 「Yes」を選択して終了

Copyright © ITmedia, Inc. All Rights Reserved.