Linux zu PPC Darwin-Kreuz-Compiler
From CGSecurity
Linux zu PowerPC Darwin/OSX-Kreuz-Compiler
Dieses Script wurde entworfen, um als Root ausgeführt zu werden. Das Ziel ist, einen Kreuzcompiler zu installieren, der in der Lage ist, um TestDisk und PhotoRec für MacOS X zu erstellen.
#!/bin/sh
# This script builds and installs a gcc cross compiler from Linux
# to darwin
# Copyright Christophe GRENIER <grenier@cgsecurity.org>
# Licence: GPL v2 or any later version
# Version 2006/02/24
root=`pwd`
name=`basename $0`
WGET=wget
die () {
echo >&2 "$1"
exit 1
}
exists () {
if [ ! -r "$1" ]; then
die "$1 does not exist"
fi
}
usage () {
die "usage: $name [clean]"
}
case "$#" in
1)
case "$1" in
clean)
rm -rf build-binutils* build-gcc*
exit 0
;;
*)
usage
;;
esac
;;
esac
# You may want to change the installation prefix, which is where the
# script will install the cross-compiler tools.
prefix='/usr'
gccVers='4.0.2'
odcctoolsVers='20060123'
GCCSOURCE="ftp://ftp.uvsq.fr/pub/gcc/releases/gcc-$gccVers"
DARWINROOTS="http://darwinsource.opendarwin.org/Roots"
CCTOOLSSOURCE="http://www.opendarwin.org/downloads/"
target='powerpc-apple-darwin'
configureGCCFlags="--with-as=/usr/bin/$target-as --with-ld=/usr/bin/$target-ld --with-libtool=/usr/bin/$target-libtool"
makeGCCFlags=''
gccTarBz2="gcc-core-$gccVers.tar.bz2"
gxxTarBz2="gcc-g++-$gccVers.tar.bz2"
echo 'Checking that needed files exist.'
for file in architecture-245.root.tar.gz Csu-57.root.tar.gz dyld-43.root.tar.gz gcc-4061.root.tar.gz gcc_os-1809.root.tar.gz gcc_select-46.root.tar.gz Libc-391.root.tar.gz Libc_headers-391.root.tar.gz Libc_static-391.root.tar.gz libdyld-43.root.tar.gz Libm-93.root.tar.gz Libmx-93.root.tar.gz Libsystem-88.root.tar.gz ncurses-8.1.root.tar.gz SystemStubs-5.root.tar.gz xnu-792.1.5.root.tar.gz zlib-15.root.tar.gz OpenSSL-26.root.tar.gz
do
if [ ! -e $file ];
then
$WGET $DARWINROOTS/$file
exists $file
fi
done
#$gxxTarBz2
for file in $gccTarBz2
do
if [ ! -e $file ];
then
$WGET $GCCSOURCE/$file
exists $file
fi
done
for file in odcctools-$odcctoolsVers.tar.bz2
do
if [ ! -e $file ];
then
$WGET $CCTOOLSSOURCE/$file
exists $file
fi
done
echo 'Creating the env'
mkdir -p $prefix/$target || die "Cannot create $prefix/$target."
ln -sf $prefix/$target $prefix/$target/usr
ln -sf $prefix/$target $prefix/$target/local
ln -sf $prefix/$target/lib/system/ /usr/lib/system
for file in architecture-245.root.tar.gz Csu-57.root.tar.gz dyld-43.root.tar.gz gcc-4061.root.tar.gz gcc_os-1809.root.tar.gz gcc_select-46.root.tar.gz Libc-391.root.tar.gz Libc_headers-391.root.tar.gz Libc_static-391.root.tar.gz libdyld-43.root.tar.gz Libm-93.root.tar.gz Libmx-93.root.tar.gz Libsystem-88.root.tar.gz ncurses-8.1.root.tar.gz SystemStubs-5.root.tar.gz xnu-792.1.5.root.tar.gz
do
tar xzf $file -C $prefix/$target
done
echo 'Building odcctools.'
if [ ! -d odcctools-$odcctoolsVers ];
then
tar xjf odcctools-$odcctoolsVers.tar.bz2
fi
cd odcctools-$odcctoolsVers
eval ./configure --target=$target --prefix=/usr 2>&1 | tee $root/configure-odcctools-$target.log || die "Configure of odcctools failed."
# Remove ld64 as it doesn't compile
perl -pi -e "s,COMPONENTS = ar as include libstuff libmacho ld ld64 man misc otool,COMPONENTS = ar as include libstuff libmacho ld man misc otool,;" Makefile
eval make 2>&1 | tee $root/odcctools-$target.log || die "Build of odcctools failed."
eval make install 2>&1 | tee $root/odcctools-$target-install.log
#|| die "Install of odcctools failed."
echo 'Building gcc.'
cd $root
if [ ! -d gcc-$gccVers ];
then
tar xjf $gccTarBz2
# tar xjf $gxxTarBz2
fi
perl -pi -e "s,/usr/bin/libtool,/usr/bin/$target-libtool,;" gcc-$gccVers/gcc/config/darwin.h
mkdir -p build-gcc-$target
cd build-gcc-$target
# --enable-languages=c,c++ \
eval ../gcc-$gccVers/configure -v $configureGCCFlags \
--enable-languages=c \
--prefix=$prefix \
--target=$target \
--enable-static --enable-shared \
2>&1 | tee $root/configure-gcc-$target.log ||
die "Configure of gcc failed."
eval make $makeGCCFlags all install 2>&1 |tee $root/gcc-$target.log ||
die "Build of gcc failed."
echo 'Success.'
Sobald der Kreuzcompiler installiert ist, solltest du in der Lage sein, ein Programm zu erstellen, durch Anwenden von
./configure --host=powerpc-apple-darwin && make
