BusyBoxとセットで使われることが多い、組み込みCライブラリ「uClibc」について解説する。標準Cライブラリ「glibc」との違いとは!?
前回「『BusyBox』の設定とコンパイルを実践してみよう」では、BusyBoxの設定項目と静的リンクによるバイナリの構築・実行について説明しました。
今回は、BusyBoxとともに組み込みLinuxでよく使われているライブラリ「uClibc」について解説していきます。
コンピュータ上で動作する複数のプログラムの処理には、例えば画面表示にかかわる処理や数値演算処理、文字列を扱う処理など、共通の処理がそれぞれに含まれています。そのような共通に利用可能な機能を取りまとめたものを「ライブラリ」といい、それぞれのプログラムがそのライブラリを利用することで、コードの再利用性を高め、開発の効率化やプログラムファイルサイズの縮小などを実現します(図1)。
また、C言語用に標準化したライブラリを「標準Cライブラリ」といい、例えばサーバやデスクトップPC向けのほとんどのLinuxシステムでは、標準Cライブラリとして「glibc(GNU C Library)」が使われています。glibcは豊富な機能を有しますが、その分“サイズが大きい”という欠点を持っています。組み込み機器でglibcを使おうとすると、glibcが提供している機能のうち一部しか使用していないのにもかかわらず、『貴重なディスクの多くがglibcで占有されてしまう』といった無駄が発生することになります……。
そんな中、組み込み機器向けに開発されたCライブラリの1つが「uClibc」です(注1)。このuClibcはもともと、MMU(Memory Management Unit)を持たないCPU向けのLinuxである「uClinux」用に開発されたもので(注2)、glibcを使って構築するプログラムをできるだけ修正なしにコンパイル可能にすることを目的として作られました。ちなみに、現在ではuClinuxだけでなく通常のLinuxでも利用できます。
以下に、uClibcの特長を示します。
ただし、制限として、
などが挙げられるため、使用の際には注意が必要です。
次に、uClibcの設定項目について見ていきたいと思います。
はじめに、uClibcをダウンロードして展開してください。すでに、連載第1回「BusyBoxをクロスコンパイルする環境を構築しよう」の解説のとおりにクロスコンパイル環境を構築している場合は、作業ディレクトリに作成した“dl”ディレクトリ内に、“uClibc-0.9.29.tar.bz2”が存在するはずです。もし、存在しないようであればuClibcのサイトから“uClibc-0.9.29.tar.bz2”をダウンロードしてください。
続いて、作業ディレクトリで以下のコマンドを実行して、uClibcのフしァイルを展開し、“uClibc-0.9.29”ディレクトリに移動してください。
$ tar jxf dl/uClibc-0.9.29.tar.bz2 $ cd uClibc-0.9.29
そして、
$ make menuconfig
を実行すると、uClibcの設定画面が表示されます(画面1)。
以下に、画面1の設定項目について示します(表1)。
設定項目 | 内容 |
---|---|
Target Architecture | ターゲットのCPUアーキテクチャ |
Target Architecture Features and Options |
MMUやFPU(Floating Point number processing Unit)の有無など、アーキテクチャの機能に関するオプションやLinuxカーネルヘッダファイルの場所などの設定 |
General Library Settings | PIC(Position Independent Code)による構築、POSIXスレッド、シャドウパスワードやタイムゾーンのサポートなど、全般的な設定 |
Advanced Library Settings | パスワードエントリを取得する関数getpwnam()や、グループエントリを取得する関数getgrnam()で使われるバッファサイズの設定 |
Networking Support | IPv6やRPC(Remote Procedure Call)など、ネットワーク関連の設定 |
String and Studio Support | 文字列処理機能やロケールなど標準入出力関連の設定 |
Big and Tall | 正規表現関連処理など、ライブラリのサイズに大きく影響する機能に関する設定 |
Library Installation Options | ライブラリのインストール先の設定 |
Security options | スタックの保護など、セキュリティに関する設定 |
uClibc development/debugging options |
クロスコンパイル環境やCFLAGSなどの指定、およびデバッグオプションの設定 |
表1 uClibcの設定画面における項目 |
関連リンク: | |
---|---|
⇒ | 組み込みLinuxで際立つ「BusyBox」の魅力 |
Copyright © ITmedia, Inc. All Rights Reserved.