pkgsrc/cross では、a.out PIC へのクロス構築はサポートされていません。
正しい cpp を使ってください。さもないと __NO_LEADING_UNDERSCORES__ や __LITTLE_ENDIAN__ のような、 あらかじめ定義されたシンボルで困ることになります。
もちろん、クロス構築をもっと安定させる必要はあります。
もし、ホストシステムに、 NetBSD ではないシステムを使うなら、
クロス構築するのに、 GNU gcc と GNU binutils の設定をする必要があります。
また、 NetBSD の make(1), config(8) や、そのシステムにある
他の構築ツールを make する必要があります。
クロス構築するために、 /etc/mk.conf を正確に設定してください。
詳しくは options(5) と mk.conf(5) を見てください。
いくつかのほかの構築スクリプトがあり:
hpcmips-make
最初に、 DESTDIR 上にディレクトリー構造を配置する必要があります。
全インクルードツリーを得るには、 構築スクリプトを用いて、
"make includes" を実行する必要があります。
全ライブラリーファイルを得るには、次の構築スクリプトを使って実行してください。
解決法: "make" を "${MAKE}" で置き換えます。
また、是非、
開発者へレポートする
をして、再び起こらないようにしてください。
これに対しては魔法の杖はありません:
#! /bin/sh
# just helping for cross compilation.
MACHINE=evbsh3
MACHINE_ARCH=sh3eb
# just in case you forgot to specify this when you built gcc...
CFLAGS="-D__NetBSD__"
export MACHINE MACHINE_ARCH CFLAGS
TARGET=/usr/pkg/cross/bin/sh-netbsdcoff
CPP=`$TARGET-gcc -print-prog-name=cpp`
make AR=$TARGET-ar AS=$TARGET-as CC=$TARGET-gcc LD=$TARGET-ld NM=$TARGET-nm \
RANLIB=$TARGET-ranlib SIZE=$TARGET-size \
STRIP=$TARGET-strip OBJCOPY=$TARGET-objcopy \
CXX=$TARGET-c++ CPP=$CPP $*
% cd $TOP/src/sys/arch/MYARCH/conf
% cp GENERIC MYCONF
% vi MYCONF
% config MYCONF
% cd ../../compile/MYCONF
% sh build-script depend
% sh build-script
# (cd $TOP/src; sh build-script beforeinstall)
# (cd $TOP/src; sh build-script includes)
これで、インクルードファイルが $DESTDIR/usr/include の下に用意できたはずです。
それをクロスコンパイラーが利用するディレクトリーに
コピー(かシンボリックリンク)してください。
# (cd $TOP/src/lib/csu; sh build-script dependall install)
# (cd $TOP/src/lib; sh build-script dependall install)
これで、 $DESTDIR/usr/lib にライブラリーのバイナリーができてるはずです。
それをクロスコンパイラーが利用するディレクトリーに
コピー(かシンボリックリンク)してください。
# (cd $TOP/src; sh build-script obj build)
foo:
(cd subdir; make)
この問題は、"make" の呼び出しにおいて与えられたコマンドライン引数を失うというもので、
これはまた、開始時に使われた make と異なるものを使ってしまいまうというものです。
foo:
(cd subdir; ${MAKE})