*クロスコンパイル環境作り方 [#y715a105]
&color(red){もっとスマートな方法がありました。ということでボツネタです。};~
Debian on coLinux上にsh4のクロスビルド環境を構築する。~
**dpkg-cross [#r6b8f552]

 apt-get install dpkg-cross

-/etc/dpkg/cross-compile
#pre{{
#default_arch = m68k
default_arch = sh4
}}

**toolchain-source [#m4495c9a]
 apt-get install toolchain-source

#pre{{
mkidr /home/build
cd /home/build
tpkg-make sh4-linux
}}

**binutiles [#q48261e6]
#pre{{
colinux:/home/build# cd binutils-sh4-linux-2.14.90.0.7
colinux:/home/build/binutils-sh4-linux-2.14.90.0.7# debuild -uc -us
colinux:/home/build/binutils-sh4-linux-2.14.90.0.7# debi
}}

**libc [#z044c26a]
-tpkg-install-libc.dodes.sh4
#pre{{
#!/bin/sh

&color(red){SERVER=${TPKG_SERVER:-"http://debian.dodes.org"} };
TDIR=${TPKG_DIR:-/tmp/tpkg-install-libc}
mkdir $TDIR

# $1 is the architecture name
archname=$1

DEFAULTLIBSET='libdb1-compat$ libc6$ libc6.*-dev$ linux-kernel-headers$'

case $1 in
        alpha-*)
          DEFAULTLIBSET='libdb1-compat$ libc6.[0-9]*$ libc6.[0-9]*-dev$ linux-kernel-headers$'
          debarch=alpha ;;

        arm-*|arm)
          debarch=arm ;;

&color(red){        sh4-*|sh4)};
&color(red){	DEFAULTLIBSET='libgcc1$ libdb1-compat$ libc6$ libc6.*-dev$ linux-kernel-headers$'};
&color(red){          debarch=sh4 ;;};

        hppa-*|hppa)
          debarch=hppa ;;

        i[3456]86|i[3456]86-*|ia32|ia32-*)
          debarch=i386 ;;

        ia64-*|ia64)
          DEFAULTLIBSET='libdb1-compat$ libc6.[0-9]*$ libc6.[0-9]*-dev$ linux-kernel-headers$'
          debarch=ia64 ;;

        m68k-*|m68k)
          debarch=m68k ;;

        mipsel-*|mipsel)
	  debarch=mipsel ;;

        mips-*|mips)
          debarch=mips ;;

        ppc-*|powerpc-*|ppc|powerpc)
          debarch=powerpc ;;

        sparc-*|sparc)
          debarch=sparc ;;

        s390-*|s390)
          debarch=s390 ;;

        *)
          echo "Hmph - dunno the $1 arch" >&2
                exit 2
esac

# $2 are the (optional) library names
if [ $# -ge 2 ]; then
    LIBSET=$2
else
    LIBSET=${LIBSET:-$DEFAULTLIBSET}
fi

wget $SERVER/debian/dists/&color(red){sid};/main/binary-${debarch}/Packages.gz -O $TDIR/packageset.gz || exit 2

rm -f $TDIR/packageset
gzip -d $TDIR/packageset.gz || exit 2

DOWNLOADEDDEBS=""
for PATTERN in $LIBSET
do
        debfilename=`dpkg-awk -f $TDIR/packageset "Package:"$PATTERN -- "Filename" | sed --silent 's/Filename: \(.*\)$/\1/gp'`
	for deb in $debfilename
	do
	  DEBHERENAME=$TDIR/`basename $deb`
	  wget $SERVER/debian/${deb} -O $DEBHERENAME || exit 2
	  DOWNLOADEDDEBS="$DOWNLOADEDDEBS $DEBHERENAME"
	done
done
#dpkg-cross -a ${debarch} -i $DOWNLOADEDDEBS || exit 2
dpkg-cross-temporary-patched -a ${debarch} -i $DOWNLOADEDDEBS || exit 2
}}

#pre{{
./tpkg-install-libc.dodes.sh4
}}

**gcc-3.3.&color(red){4}; [#y08542fd]

toolchain-sourceのgccは3.3.3なので3.3.4に置き換える。~
gcc-3.3.4のソースを取ってきて~
#pre{{
apt-get source gcc-3.3
cd gcc-3.3-3.3.4
cp gcc-3.3.4.tar.bz2 /usr/src/toolchain
cp debian
cp rules.patch patches
cp -a patches /usr/src/toolchain/patches/gcc-3.3.4
cd /usr/src/toolchain/patches
mv gcc gcc-3.3.3
ln -s gcc-3.3.4 gcc
}}

#pre{{
colinux:/home/build# cd gcc-sh4-linux-3.3.3
colinux:/home/build# perl -pi -e s'/__thread/__thread_param/'  \
/usr/sh4-linux/include/bits/sigthread.h

colinux:/home/build# perl -pi -e s'/__thread/__thread_param/'  \
/usr/sh4-linux/include/pthread.h

/home/build/gcc-sh4-linux-3.3.3# debuild -uc -us
/home/build/gcc-sh4-linux-3.3.3# debi

}}
参考: http://sources.redhat.com/ml/crossgcc/2003-05/msg00171.html

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS