[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