連載
» 2008年09月03日 00時00分 公開

いますぐ使える! BusyBox活用術(3):スリムな相棒「uClibc」をBusyBoxで使ってみよう (2/3)

[宍道 洋 busybox同好会,@IT MONOist]

uClibcを設定変更してクロスコンパイル環境を作り直す

 連載第1回「BusyBoxをクロスコンパイルする環境を構築しよう」でクロスコンパイル環境を構築しましたが、その解説の中ではuClibcをデフォルトの設定のまま利用していました。しかし、場合によってはuClibcの設定変更をする必要が出てくる可能性もあります。

 ここでは、uClibcの設定変更について紹介します。

(1)Buildroot内での設定による変更

 「Buildroot」を使ってクロスコンパイル環境を構築する際にBuildrootの設定を行いましたが、その中の設定のうちいくつかの項目についてはuClibcの設定を容易に変更できるものが含まれています。

 具体的には、Buildrootの設定のうち[Toolchain]の中で、画面2の赤枠で示すようなロケールやスレッドライブラリ、および画面3の赤枠で示すようなIPv6やRPC、2Gバイト以上のファイルのサポートなどがそれに当たります。

Buildrootの設定内でのuClibcの設定(1) 画面2 Buildrootの設定内でのuClibcの設定(1)
Buildrootの設定内でのuClibcの設定(2) 画面3 Buildrootの設定内でのuClibcの設定(2)

(2)Buildrootに含まれる、uClibc用のconfigファイルを利用

 (1)の方法では特定の設定のみ変更可能でしたが、もう少し詳細な設定(例えば、バッファサイズの変更など)を行う場合には、“buildroot”内にあるuClibc用のconfigファイルを基に設定変更を行うことができます。

 本連載の内容どおりに環境構築を行ってきた方であれば、作業ディレクトリ上に、“buildroot”と“uClibc-0.9.29”が展開されているはずですので、これらを使います。

 まず、“buildroot”ディレクトリ内にあるデフォルトのuClibcの設定ファイルを“uClibc-0.9.29”ディレクトリの直下に、“.config”というファイル名でコピーします。

$ cp buildroot/toolchain/uClibc/uClibc-0.9.29.config
 uClibc-0.9.29/.config 

 その後、“uClibc-0.9.29”ディレクトリへ移動し、uClibcの設定を行います。

$ cd uClibc-0.9.29
$ make menuconfig 

 ここでは、CPUアーキテクチャの指定とそのほかの必要な設定を行います。ただし、設定可能な項目のうち、カーネルヘッダのロケーション、(1)で設定可能な項目については、Buildrootの設定で上書きされてしまいますので、注意が必要です。

 設定が完了したら、新しく作成された“.config”ファイルを別名で保存(ここでは“my.uclibc.config”)し、今度はBuildrootの設定を行います。

$ cp .config ../my.uclibc.config
$ cd ../buildroot
$ make menuconfig 

 Buildrootの設定は、連載第1回と同様に行いますが、今回はこれに加えて[Toolchain]の[uClibc configuration file to use?]で、先ほど作成した“my.uclibc.config”ファイルを指定します(画面4)。

uClibcの設定ファイルを指定 画面4 uClibcの設定ファイルを指定

 設定終了後は、連載第1回と同様に「make」を実行してクロスコンパイル環境を構築します。

$ make 

BusyBoxのコンパイル

 それでは、BusyBoxをコンパイルしていきましょう。前回「『BusyBox』の設定とコンパイルを実践してみよう」では、BusyBoxを静的リンクによるバイナリとして構築しましたが、今回は共有ライブラリとしてuClibcを利用する動的リンクバイナリとして構築します。

 構築手順は前回とほぼ同様です。ただしBusyBoxの設定[Busybox Settings]−[Build Options]の中で、前回は「Build BusyBox as a static binary」の項目を「有効」にしていましたが、今回は動的リンクバイナリとして構築しますので「無効」にしてください(画面5)。

[Build Options]の設定 画面5 [Build Options]の設定

 また、[Busybox Settings]−[Installation Options]の中の「BusyBox installation prefix」では、ホームディレクトリ下の“bb_uclibc”というディレクトリを指定して、そこにインストールするようにします(画面6)。

インストール先の設定 画面6 インストール先の設定

 設定後、構築「make」、およびインストール「make install」を行ったら、クロスコンパイル環境をインストールしたディレクトリから“lib”ディレクトリを、そのままBusyBoxをインストールしたディレクトリにコピーします。

$ cp -a ~/cross/lib ~/bb_uclibc/ 

 これで“bb_uclibc”ディレクトリ以下に、uClibcとBusyBoxによる環境が整いました。

Copyright © ITmedia, Inc. All Rights Reserved.