[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[pbsd-mg2] Re: cross compile env.
R500を買う人から借りられるかも(^^)
takemura@sm.sony.co.jp wrote:
> Makefile の include を /usr/share/mk から探してしまう部分があるので、
> $somewhere/mips_src/usr/src/sys/share/mk/bsd.kinc.mk をコピー。
> (元の Makefile を修正するのが正しい!?)
>
> cp $somewhere/mips_src/usr/src/sys/share/mk/bsd.kinc.mk /usr/share/mk
>
> CD-ROM から install された config では -current の config file を
> 処理できないため、 usr/src/usr.sbin/config で make && make install する。
> /usr/sbin/config が新しいものに置き代わる。
make + usr/share/mkやconfigは、currentのものをcompileして、
別の所にinstallしておいた方が良いかも。
もしくは開発環境を current にupgradeしてしまった方が楽かもしれません。
currentのbinary snapshotは、
<ftp://ftp.jp.netbsd.org/pub/NetBSD/arch/i386>にあります。
> root で usr/src/pkgsrc/cross/cross-netbsd で make && make install する。
LOCALBASE=$somewhere/cross-mips
も指定した方が後でuninstallするときに楽です :)
# pkg_deleteしても、たぶん全部消えませんから(^^;
あと、クロスコンパイル時のもろもろの設定は、
mipsel-netbsd-make内で行っているので、
makeのかわりに、mipsel-netbsd-make scriptを使用すると楽です。
今更ながら、packageの使い方です。
--
<ftp://www.cec.co.jp/usr/sakamoto/NetBSD/experiment/cross-netbsd.tgz>
必要なもの: NetBSD-current src,pkgsrc
使い方: /usr/pkgsrc/crossの下にcross-netbsd.tgzを展開して、
# cd /usr/pkgsrc/cross/cross-netbsd
# make TARGET_MACHINE_ARCH=mips TARGET_MACHINE=pmax \
ALLSRC=/a/src TARGET_ROOT=/a/root LOCALBASE=/a/cross-mips \
all install
arm32なら、TARGET_MACHINE_ARCH=arm32 TARGET_MACHINE=arm32。
ALLSRCには、union mountしたNetBSD-current source tree path
を指定するのを推奨(破壊するので)。
LOCALBASEを指定してインストール先を変更するのを推奨。
USE_BINUTILSを省略するとsource tree内のbinutils-2.8を使用します。
install後は、${LOCALBASE}/bin/${MACHINE_GNU_ARCH}-netbsd-make
shell scriptを使ってmakeすることにより、nativeでmakeするのと
同じようにtarget用のbinary,kernelを作成することができます。
src/libをmake installした後、
${TARGET_ROOT}/usr/libの中身を、
${LOCALBASE}/${MACHINE_GNU_ARCH}-netbsd/libにlinkすることで、
${MACHINE_GNU_ARCH}-netbsd-gcc hoge.c で、targetのa.outを得ることもできます。
--
おそらく一番簡単な方法は、
1. <ftp://ftp.jp.netbsd.org/pub/NetBSD/arch/i386/snap-19981207/>
をインストール
2. <ftp://ftp.jp.netbsd.org/pub/NetBSD-current/tar_files/pkgsrc.tar.gz>
を/usrに展開
3. <ftp://www.cec.co.jp/usr/sakamoto/NetBSD/experiment/cross-netbsd.tgz>
を/usr/pkgsrc/crossに展開
4. 作業ディレクトリ(以下 /MG2WORKと表記)を作成する
5. /MG2WORKに
<ftp://ftp.jp.netbsd.org/pub/NetBSD-current/tar_files/src/>を展開
6. UNION MOUNT
# mkdir /MG2WORK/worksrc; mount_union -b /MG2WORK/src /MG2WORK/worksrc
7. cross-netbsdをinstall
# cd /usr/pkgsrc/cross/cross-netbsd
# make TARGET_MACHINE_ARCH=mips TARGET_MACHINE=pmax \
ALLSRC=/MG2WORK/worksrc TARGET_ROOT=/MG2WORK/root \
LOCALBASE=/MG2WORK all install clean
8. UNION MOUNTし直し
# umount /MG2WORK/worksrc; rm -rf /MG2WORK/worksrc
% mkdir /MG2WORK/worksrc; mount_union -b /MG2WORK/src /MG2WORK/worksrc
9. kernel make (/MG2WORK/bin/ にpathを通す)
% cd /MG2WORK/worksrc/sys/arch/pmax/conf
% config GENERIC
% cd ../compile/GENERIC
% mipsel-netbsd-make depend; mipsel-netbsd-make
てな感じでしょうか。
FreeBSDでも使えるようにするには...
make + share/mk, config, lorder, tsortも用意するにすれば良いのかな。
sakamoto@cec.co.jp