*クロスコンパイル環境作り方 [#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