いますぐ使える! BusyBox活用術

いますぐ使える! BusyBox活用術(1)

BusyBoxをクロスコンパイルする環境を構築しよう

宍道 洋 busybox同好会 2008/7/2

- PR -

 後は、「make」を実行すると構築が開始されますが、必要なファイルをデフォルトでは“dl”ディレクトリにダウンロードしながらコンパイルを行っていくので、Buildrootを構築するたびにダウンロードしなくても済むようにダウンロードファイル格納用のディレクトリを別途作成してリンクを張っておくとよいでしょう。


$ mkdir ../dl
$ ln -s ../dl

 そして、コンパイルを開始します。

$ make

 無事コンパイルが終了すると、先ほど指定したディレクトリ内にクロスコンパイル用の環境が出来上がります。“usr/bin”以下には、例えば、ARM用の場合“arm-linux-”から始まるコンパイラやリンカが作成されています。利用しやすいようにパスを通しておくとよいでしょう。今回の場合、環境変数PATHの最後に以下の記述を追加しています。

$ PATH=$PATH:/home/shinji/cross/usr/bin

 ここで試しに「Hello World」をコンパイルしてみましょう。まず、以下の内容の“hello.c”を作成します。

#include <stdio.h>
int main(void) {
    printf("Hello World!\n");
}

 そして、以下のようにコンパイルを実行します。ここでは静的にリンクをし、“hello-arm”という名前で実行ファイルを作成しています。

$ arm-linux-gcc -static -o hello-arm hello.c

 ファイルはできましたが、ちゃんとARM用のバイナリはできているでしょうか? 「file」コマンドで調べてみましょう。

$ file hello-arm
hello-arm: ELF 32-bit LSB executable, ARM, version 1, statically linked, not stripped

 いかがでしょうか? ARM用の静的リンクによる実行ファイルが出来上がっていると思います。

ホスト上でターゲット用の実行ファイルを動かす

 先ほど作成した実行ファイルは本当に実行できるのでしょうか?

 コンパイルのたびにファイルをターゲットに転送して実行してもよいのですが、わざわざターゲットにファイルを転送する手間や、それ以前にターゲットが利用できない場合などがあり得るため、あまりお手軽とはいえません。

 そのような場合は、CPUエミュレータである「QEMU」を利用することで、簡単な動作確認が可能になります。QEMUは、Linuxの多くのディストリビューションで利用できます。例えば、Fedoraでは「yum」コマンドで、

$ yum install qemu

インストールできます。

 またDebianでは「apt-get」コマンドで、

$ apt-get install qemu

インストールできます。

 インストールが完了すると、「qemu-<アーキテクチャ名>」といったコマンドが利用できるようになります。アーキテクチャ名には、armやmips、ppcなどを指定することによって、それぞれのアーキテクチャ用の実行ファイルを動作させることが可能となります。

 それでは、先ほどコンパイルしたhello-armを実行してみましょう。ARMをエミュレートするコマンドは「qemu-arm」ですので、そのコマンドの後に、hello-armを指定します。

$ qemu-arm hello-arm
Hello World!
$

 うまく動作確認できたと思います。うまくいかなかった方はもう一度本稿を参考に設定などの見直しをしてみてください。

 さて、今回はBusyBoxのおさらいと組み込み向けのクロスコンパイル環境の準備を行いました。次回は、今回準備した環境を使って実際に“BusyBoxをコンパイル”してみます。ご期待ください!(次回に続く)

  • 連載バックナンバー
  • 全記事インデックス
  • 組み込み開発トップ
  • MONOistトップ

スキルアップ/キャリアアップ(JOB@IT)

スポンサーからのお知らせ

- PR -
@IT Sepcial

震災関連・復興支援情報

震災関連・復興支援情報
@IT MONOist/EE Times Japan/環境メディアの製造業技術者向け3メディアを中心に、震災関連/復興支援情報を集めました

次世代エンベデッドコーナー

次世代エンベデッド
“次世代”の組み込み機器を開発するエンジニアを支援するコーナー。新潮流・新技術をインタビューやコラム、解説記事で分かりやすく紹介!

Windows Embeddedコーナー

Windows Embedded
Windows Embedded専門コーナー。Windows Embedded StandardやWindows Embedded CEをはじめとする「Windows Embedded」ファミリの最新動向や技術情報をお届けします!!

Androidコーナー

Android
Android専門コーナー。組み込みデバイスへの適用からアプリケーション開発、イベントレポート、ニュースなどAndroidに関するさまざまな技術情報がここに集結!!

@IT MONOist 求人情報

- PR -