3.1のクロスコンパイル環境構築NetBSDの大きな特徴の一つにクロスコンパイル環境構築の容易さがあります。3.1で実行させるアプリケーションをビルドするクロスコンパイル環境構築手順を紹介します。ソースの準備クロスコンパイル環境は通常のパッケージインストールとは異なりpkgsrcからビルドするという形態では行えません。手動でNetBSDのソースを取得してそこに含まれるbuild.shを実行してクロスコンパイル環境を構築します。ftp://ftp.jp.netbsd.org/pub/NetBSD/NetBSD-3.1/source/sets/あたりから以下のソースの塊を取得します。※この中に/usr/src/build.shが含まれています。2.0.2)用のクロスコンパイル環境を構築する場合には上記サイトにソースがないためftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0.2/source/sets/あたりから取得します。上記でダウンロードしたファイルは/tmpにあるものと仮定し次のように解凍します。/tmp/xsrc.tgz上記により/usr/srcや/usr/xsrcが生成されます。ツールチェインの作成ここではクロスコンパイラを構成するプログラム(ツール)群を作成します。tools」はTOOLDIRが/usr/src/toolsであることを示しています。macppc」はMACHINE_ARCHをpowerpcにするための指定です。powerpc」という指定はできません。※最後の「tools」という操作指示はツールのビルドとインストールを行うための指示です。/usr/src/tools/binには以下のプログラムが作成されます。libを以下のようにして作成します。※1〜2時間掛かります。tools」を省略すると/usr/src/tools/binとは別の/usr/src/tooldir.NetBSD-3.1-i386/binにツールが再作成されてしまいます。デスティネーションパス」を省略しているためデフォルトで/usr/src/destdir.macppcにincludeとlibが作成されます。/usr/src/destdir.macppc/usr/includeの構成/usr/src/destdir.macppc/usr/libの構成/usr/src/tools/powerpc--netbsdの確認この時点では/usr/src/tools/powerpc--netbsdにはbinとlibだけが生成されています。/usr/src/tools/powerpc--netbsd/binは以下の構成になっています。stripまた/usr/src/tools/powerpc--netbsd/libにはldscriptsディレクトリしか存在しません。/usr/src/tools/powerpc--netbsd/libにおけるシンボリックリンクの作成/usr/src/tools/powerpc--netbsd/libの中に下記ファイル群へのシンボリックリンクを作成します。crtbegin.o等)と/usr/src/destdir.macppc/lib/*(libc.so等)。※これはコンパイル時の共有ライブラリの扱いに関する非互換エラーを回避します。テストコンパイルテストプログラムのソース以下の内容をもつ/root/crosstest.cを用意します。crosstest.c※crosstesti386は5,584バイトの実行ファイルとなります。crosstest.c※コンパイルエラーは発生せずにcrosstestppcは6,371バイトの実行ファイルとなります。3.1での実行NetBSD/macppc環境を即席で作成して上記のテストプログラムを実行してみました。クロスコンパイラで作成したPowerPC用プログラムが無事動作しました。GXemul環境の仮想NetBSD/macppcでの実行GXemulは数多くのマシンをエミュレートできることで有名なオープンソースのソフトウェアです。4.0.1上で上記crosstestppcを実行してみました。8.04に導入しました。G4のエミュレートを意味します。GXemul環境では実機と異なりOpenFirmwareの操作は不要で、まず端末種別の設定から開始されます。4.0.1にコピーして実行してみました。その他(1)/usr/src/objは/usr/objへのシンボリックリンクとなります。