BuildrootでMIPSクロスコンパイル環境を作る

MIPSクロスコンパイル環境をBuildrootを使って構築します。Buildrootを使用すると、クロスコンパイル環境の構築や、ターゲットのファイルシステムを構築することができます。

クロス開発用環境の構築

クロス開発用Linuxのインストール

Debian etchをインストールします。

開発ツールのインストール

必要になりそうな開発ツールを先にインストールしておきます。
# aptitude install build-essential fakeroot devscripts
# aptitude install g++ subversion ncurses-dev bison flex gettext git-core
# aptitude install wget cramfsprogs

Buildrootのインストール

Buildrootのダウンロード

http://buildroot.uclibc.org/

ダウンロードサイトのDaily Snapshotsから最新のアーカイブをダウンロードします。

http://buildroot.uclibc.org/downloads/snapshots/

Buildrootのインストール

作業用のディレクトリにダウンロードしたファイルを展開して、そのディレクトリに入ります。
# tar jxf buildroot-20081007.tar.bz2
# cd buildroot

Buildrootの設定

Buildroot ConfigurationでBuildrootの設定を行います。
# make menuconfig

使用するアーキテクチャを指定します。
[Target Architecture] ← mips
[Target Architecture Variant] ← mips 32

クロスコンパイル環境を置くディレクトリを指定します。
[Build Options]→[Toolchain and header file location?] ← /home/buildroot/mips/cross

[Package Selection for the target]で、BusyBoxの項目を「off」にします。

[Target filesystem options]で、すべての項目のチェックを「off」にし、[Exit]で終了します。

[Do you wish to save your new Buildroot configuration?] の問い合わせには、「Yes」を選択します。

(注)make menuconfigを使用するにはncursesライブラリが必要になります。

ダウンロードファイル格納用ディレクトリの作成とリンク

# mkdir ../dl
# ln -s ../dl

コンパイル

# make

usr/bin 以下に、MIPS用の mips-linux- で始まるコンパイラやリンカが作成されます。

パスを通す

PATH=$PATH:/home/buildroot/buildroot/mips/cross/usr/bin
を、~/.bashrc に追加します。
# vi ~/.bashrc

動作確認

Hello MIPSをコンパイルしてみます。

hello.c の作成

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

コンパイルの実行

静的にリンクをし、hello-mipsという名前で実行ファイルを作成します。
$ mips-linux-gcc -static -o hello-mips hello.c

コンパイル結果の確認

file コマンドで調べます。
# file hello-mips
hello-mips: ELF 32-bit MSB executable, MIPS, version 1 (SYSV), statically linked, not stripped

QEMUでのターゲット用ファイルの実行

CPUエミュレータQEMUを使用し、ターゲット用実行ファイルの動作確認を行います。

QEMUのインストール

# apt-get install qemu

QEMUの実行

コマンドでアーキテクチャ名で指定しCPUをエミュレートします。
qemu-<アーキテクチャ名> <実行ファイル名>

MIPSをエミュレートするコマンドは、qemu-mipsです。

hello-mipsの実行

# qemu-mips hello-mips
Hello MIPS!

#

変更 2011.10.03
2008.10.05