スリムな相棒「uClibc」をBusyBoxで使ってみよう:いますぐ使える! BusyBox活用術(3)(2/3 ページ)
BusyBoxとセットで使われることが多い、組み込みCライブラリ「uClibc」について解説する。標準Cライブラリ「glibc」との違いとは!?
uClibcを設定変更してクロスコンパイル環境を作り直す
連載第1回「BusyBoxをクロスコンパイルする環境を構築しよう」でクロスコンパイル環境を構築しましたが、その解説の中ではuClibcをデフォルトの設定のまま利用していました。しかし、場合によってはuClibcの設定変更をする必要が出てくる可能性もあります。
ここでは、uClibcの設定変更について紹介します。
(1)Buildroot内での設定による変更
「Buildroot」を使ってクロスコンパイル環境を構築する際にBuildrootの設定を行いましたが、その中の設定のうちいくつかの項目についてはuClibcの設定を容易に変更できるものが含まれています。
具体的には、Buildrootの設定のうち[Toolchain]の中で、画面2の赤枠で示すようなロケールやスレッドライブラリ、および画面3の赤枠で示すようなIPv6やRPC、2Gバイト以上のファイルのサポートなどがそれに当たります。
(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)。
設定終了後は、連載第1回と同様に「make」を実行してクロスコンパイル環境を構築します。
$ make
BusyBoxのコンパイル
それでは、BusyBoxをコンパイルしていきましょう。前回「『BusyBox』の設定とコンパイルを実践してみよう」では、BusyBoxを静的リンクによるバイナリとして構築しましたが、今回は共有ライブラリとしてuClibcを利用する動的リンクバイナリとして構築します。
構築手順は前回とほぼ同様です。ただしBusyBoxの設定[Busybox Settings]−[Build Options]の中で、前回は「Build BusyBox as a static binary」の項目を「有効」にしていましたが、今回は動的リンクバイナリとして構築しますので「無効」にしてください(画面5)。
また、[Busybox Settings]−[Installation Options]の中の「BusyBox installation prefix」では、ホームディレクトリ下の“bb_uclibc”というディレクトリを指定して、そこにインストールするようにします(画面6)。
設定後、構築「make」、およびインストール「make install」を行ったら、クロスコンパイル環境をインストールしたディレクトリから“lib”ディレクトリを、そのままBusyBoxをインストールしたディレクトリにコピーします。
$ cp -a ~/cross/lib ~/bb_uclibc/
これで“bb_uclibc”ディレクトリ以下に、uClibcとBusyBoxによる環境が整いました。
Copyright © ITmedia, Inc. All Rights Reserved.