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