View ユーザーランドの構築category(Tag) treefile info
ユーザーランドの構築方法
ユーザーランドをコンパイルするために必要な情報を整理しました。 コンパイル環境の構築基本的にはH8/300クロス開発環境です。
ただし、最終的に生成されるバイナリに再配置情報が必要なので、
binutilsにパッチをあてる必要があります。 binutilsbinutils-2.11.2.patch 2.12用はまだ作ってません。コンパイル手順 $ tar xzf binutils-2.11.2.tar.gz $ cd binutils-2.11.2 $ patch -p1 < binutils-2.11.2.patch $ ./configure --target=h8300-hitachi-hms $ make
パッチをあてててから、H8/300のクロス開発用でビルドしてください。
configureのオプションは、環境に合わせて適当に変更してください。 gcc普通にH8/300のクロスコンパイラとして作ってください。$ tar xzf gcc-3.0.4.tar.gz $ cd gcc-3.0.4 $ ./configure --target=h8300-hitachi-hms \ --enable-languages="c,c++" --without-newlib $ make newlibを使わないので、これでコンパイルできるはずです。 ただし、最近作っていないので、ひょっとしたら間違っているかもしれません。 coff2f;tcoff → Flat Binaryのコンバータです。uClinuxはCOFFのバイナリを読めないので、 これを使って読めるフォーマットに変換します。
ソースは、
coff2flt-0.5.tar.gzにあります。 $ tar xzf coff2flt-0.5.tar.gz $ cd coff2flt-0.5 $ patch -p1 < coff2flt-0.5.patch (LDFLAGSを修正) $ make
単純にコンパイルすると、
システムに標準で用意されているBFDライブラリをリンクしてしまうので、
makeする前に、H8/300用のBFDライブラリがリンクされるように、
LDFLAGSを修正します。
よくわからない場合は、binutils-2.11.2/bfd/libbfd.aと
binutils-2.11.2/libiberty/libiberty.aをcoff2flt-0.5にコピーして、 おまけで、コンパイル済みバイナリを置いておきます(i386/glibc2.1)。 どうしても動かない場合は、使ってください。 genromfsROMFSを使わなければ不要です。H8/300用パッチはありません。その辺からダウンロードしてきてコンパイルしてください。 ここにも genromfs-0.3.tar.gzがあります。 探せば、パッケージもあると思います。 ライブラリの構築uClibcを使います。uClibc-0.9.9.tar.bz2を、ダウンロードしてください。
もっと新しいのも出ていますが、全然テストしていないので(ごめんなさい)、
動くかどうかわかりません(0.9.10はコンパイル出来ません。0.9.11は未確認)。
newlibを使っている場合は、上書きしてしまわないように注意してください。
h8300-uclibc-gccとh8300-uclibc-ldというドライバが出来るので、
これを使うと楽できるのかもしれませんが、私は使っていないので、よくわかりません。 コンパイル方法準備が終わったので、やっと本題のコンパイル方法に入れます。基本的には、他のアーキテクチャと同じ手順でコンパイルできます。 m68kの情報も参考になると思います。 流れとしては、
コンパイル
ごく普通にコンパイルしてください。 リンク
gccを使ってリンクする時は、同じく、 FlatBinaryへ変換
coff2fltでFlatBinary形式に変換します。使い方はhelpを見ればわかると思いますが、 イメージファイルの作り方出来上がったプログラムを持っていくには、今の所、
で、このイメージの作り方を簡単に説明します。 作成方法
注意事項当然のごとくサイズの制限があります。現在は、最大448KBです(半端だ)。ロードアドレスとサイズは、ldscriptで指定しているので、カーネルのサイズ、 起動後の空きメモリ容量と相談して、指定をを変更してください。 arch/h8300/platform/h8300h/aki3068net/ram.ldの rdisk : ORIGIN = 0x4A0000, LENGTH = 0x70000 です。 修正した場合は、uramセクションの指定も修正してください。 本当は、カーネルコンフィグレーションで変更できるようにしたいんですが、 まだ、そこまで手が回りません。 おまけカーネルにイメージファイルをリンクしてしまえば、限界までメモリを有効利用できます。 かわりに、ファイルサイズの肥大化により、ダウンロード時間が延びてしまいますが。それでもいいという人は、以下の作業を行ってください。リンクできるようになります。
うまく行かない場合は、arch/h8300/platform/generic/rom.ldを参照してください。 最後に以前に書いた文章を、もう少しわかりやすくした…つもりですが、 あまり変わっていないような気が…。 uClinuxとH8/300Hに固有な部分はそれほど無い(はず)なので、 他のアーキテクチャでのクロスコンパイルの情報を参考にすれば、 何とかなるんじゃないかと思ってます。 ということで、誰かBusyBoxをコンパイルしてください。あれが動けば、 ユーザーランドの構築がだいぶ楽になりそうなので。
各種指摘・質問・「書き直してやったぞ」というありがたい報告等は、
出来ればML
に送ってください。
Project Page Yoshinori Sato |