NetBSDクロス開発環境構築


NetBSDは、互いに異なるアーキテクチャのコンピュータの実行バイナリのみ ならず、それを実行するOS自体もクロス開発可能である。ホスト側もターゲット側 も、互いに任意の組合せで可能である…ように作ろうと意図されている。 これをロボットや、センサネットワーク等の組込機器の開発に活用しない わけにはいかない。1.6.xの頃から急速に環境が整備されて実用性が高まって 来たが、2.0でとうとうクロス開発環境として完成の域に達した。これを利用 してクロス開発環境を構築する備忘録として、このページを書く。

おそらく、UNIX Magazineの連載「ロボットのある暮らし」に登場するSpeecys (スピーシーズ)ロボット等の開発者にも役立つだろうと期待している。

前提条件

NetBSD 2.0で、ホスト側i386(IBM ThinkPad A21e), ターゲット側ブレインズ mmeyeとする。作業は、スーパユーザ(root)で行い、一般ユーザ権限ではOSの 開発は行わないものとする。ただし、一般のユーザランドアプリは、一般 ユーザ権限でも開発する。

OSインストール

まずホスト側PCに、NetBSD2.0.2をインストールした。0.8の頃のようにtar玉 が転がってるのではなく、一応インストーラが付属している。実にそっけ無い インストーラだが、案外使い易かった。ただしパーティションエディタの吐く C/H/SはWindowsと両立しなかったので、MBMをパーティションエディタ兼ブート セレクタとして使用した。MBMは、これで後、FDだけでなくCDも起動デバイスに 選べたら言うこと無しだね。

簡単なガイドを見つつ、初起動、2度目の起動の設定を済ませる。

ソースツリーの展開

xsrc以外のソース(gnusrc.tgz, src.tgz, sharesrc.tgz, syssrc.tgz) を/usr/srcに展開。

クロス開発用の環境変数設定

setenv TOOLDIR /usr/tool setenv DESTDIR /usr/dest set path=($TOOLDIR/bin $path)
をrootの.cshrcに追加。念の為、loginし直す。pathには$TOOLDIRではなく、 $TOOLDIR/binを追加するのを間違えないこと。

次いで作業ディレクトリを用意する。

# cd /usr # mkdir tool dest obj

クロス開発ツールの作成

クロス開発用のツールを/usr/toolに構築する。
# cd /usr/src
# ./build.sh| less	# usageを読む
# ./build.sh -m mmeye tools >& tools.log &
# tail -f tools.log
暫し待たれよ
成功したら、/usr/tool/binに開発ツールが出来てるはずである。そこで、 rehash するか、loginし直す。

クロス開発環境の構築

いよいよ最終段階。ライブラリ等の諸々を含めたクロス開発環境を構築する。
# ./build.sh -m mmeye build >& build.log &
# tail -f build.log
これで完成。しかし、IBM ThinkPad A21e(Celeron/600MHz)で4.5時間掛かった。

クロス開発

ユーザランドアプリ

通常のmakeの代わりに nbmake-mmeyeを使うだけ。ただし、一応Makefileを作る。 環境変数の設定を忘れないこと。
% cat >jkl.c
#include <stdio.h>
main(){
	printf("hello, world!\n");
}
^D
% cat >Makefile
PROG=	jkl

.include <bsd.prog.mk>
^D
% nbmake-mmeye jkl
後はftp等でターゲットに送り込んで実行する。
一般ユーザ側も、環境変数の設定を忘れないように。

kernelの再構築

通常のconfigの代わりに nbconfig-mmeyeを使う。
通常のmakeの代わりに nbmake-mmeyeを使う。 環境変数の設定を忘れないこと。
# cd /usr/src
# cd sys/arch/mmeye/conf
# cp -ip MMEYE MYKERNEL
# nbconfig MYKERNEL
# cd ../compile/MYKERNEL
# nbmake-mmeye depend && nbmake-mmeye

参考文献

以上、及びNetBSD,GNUのソースコード寄贈者に感謝。いや、本当に。

中村和志のNetBSDページ

このページ<http://www.kobe1995.jp/~kaz/NetBSD/cross.html>はリンク フリーです。無断でリンクして構いません。

Absolutely No Warranty!
またこのページの内容について、正確を期すよう努力は致しますが、 全くの無保証です。ここで得た情報は、全て自分の責任でご利用下さい。

Powered by FreeBSD
For questions or comments, please send mail to: kaz@kobe1995.net