From a5b7212239d71383b71ccf6edc23fd3454866c7c Mon Sep 17 00:00:00 2001 From: arrow_zhang Date: Thu, 27 Nov 2008 22:02:29 +0800 Subject: [PATCH] [ADD] Makefile for cross_compiler create, complete later. --- tools/cross_compiler/Makefile | 120 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 tools/cross_compiler/Makefile diff --git a/tools/cross_compiler/Makefile b/tools/cross_compiler/Makefile new file mode 100644 index 0000000..a771a00 --- /dev/null +++ b/tools/cross_compiler/Makefile @@ -0,0 +1,120 @@ +#Makefile to create cross-compiler + +all: + @echo "later do" + +#ref: http://cross-lfs.org/view/svn/x86/cross-tools/gcc-static.html +export CLFS=/mnt/clfs +sudo chown ${USER} /mnt/clfs/ -R +mkdir -pv ${CLFS} +mkdir -v ${CLFS}/usr + +install -dv ${CLFS}/tools +sudo ln -sv ${CLFS}/tools / +install -dv ${CLFS}/cross-tools +sudo ln -sv ${CLFS}/cross-tools / +sudo chown ${USER} /mnt/clfs/ -R +sudo chown ${USER} /tools -R +sudo chown ${USER} /cross-tools -R + +cat >> ~/.bashrc << "EOF" +set +h +umask 022 +CLFS=/mnt/clfs +LC_ALL=POSIX +PATH=/cross-tools/bin:/bin:/usr/bin +export CLFS LC_ALL PATH +EOF +source ~/.bash_profile + +unset CFLAGS +unset CXXFLAGS +export CLFS_HOST="$(echo $MACHTYPE | \ + sed "s/$(echo $MACHTYPE | cut -d- -f2)/cross/")" + +# cd kernel tree +install -dv /tools/include +make ARCH=i386 headers_check +make ARCH=i386 INSTALL_HDR_PATH=dest headers_install +cp -rv dest/include/* /tools/include + +# file-4.26 +./configure --prefix=/cross-tools +make +make install + +#Cross Binutils-2.18 +patch -Np1 -i ../binutils-2.18-posix-1.patch +patch -Np1 -i ../binutils-2.18-branch_update-3.patch +mkdir -v _build +cd _build +AR=ar AS=as ../configure --prefix=/cross-tools \ + --host=${CLFS_HOST} --target=${CLFS_TARGET} --with-lib-path=/tools/lib \ + --disable-nls --enable-shared --disable-multilib +make configure-host +make +make install +cp -v ../include/libiberty.h /tools/include + +#Cross GCC-4.3.2 - Static +patch -Np1 -i ../../gcc-4.3.2-specs-1.static.patch +patch -Np1 -i ../../gcc-4.3.2-posix-1.patch +echo " +#undef STARTFILE_PREFIX_SPEC +#define STARTFILE_PREFIX_SPEC \"/tools/lib/\"" >> gcc/config/linux.h +cp -v gcc/Makefile.in{,.orig} +sed -e "s@\(^CROSS_SYSTEM_HEADER_DIR =\).*@\1 /tools/include@g" \ + gcc/Makefile.in.orig > gcc/Makefile.in +mkdir -v _build +cd _build +AR=ar ../configure --prefix=/cross-tools \ + --build=${CLFS_HOST} --host=${CLFS_HOST} --target=${CLFS_TARGET} \ + --disable-multilib --with-local-prefix=/tools --disable-nls \ + --without-headers --with-newlib --disable-decimal-float \ + --disable-libgomp --disable-libmudflap --disable-libssp \ + --disable-shared --disable-threads --enable-languages=c +make +make install + +## uClibc try (0.9.30) +#export prefix=/tools +#export ldso_dir=/tools/lib +#configure uClibc with UCLIBC_HAS_FENV +# OR:configure GCC with --disable-decimal-float +make CROSS=${CLFS_TARGET}- PREFIX=/tools RUNTIME_PREFIX=/ menuconfig +make CROSS=${CLFS_TARGET}- PREFIX=/tools RUNTIME_PREFIX=/ install_dev +make CROSS=${CLFS_TARGET}- PREFIX=/tools RUNTIME_PREFIX=/ install +cp -r /tools/usr/i386-linux-uclibc/usr/include/* /tools/include/ + +# Cross GCC-4.3.2 - Final (delete old compiled gcc dir) +patch -Np1 -i ../../gcc-4.3.2-specs-1.shared.patch +patch -Np1 -i ../../gcc-4.3.2-posix-1.patch +echo " +#undef STARTFILE_PREFIX_SPEC +#define STARTFILE_PREFIX_SPEC \"/tools/lib/\"" >> gcc/config/linux.h +cp -v gcc/Makefile.in{,.orig} +sed -e "s@\(^CROSS_SYSTEM_HEADER_DIR =\).*@\1 /tools/include@g" \ + gcc/Makefile.in.orig > gcc/Makefile.in +# +#in file: gcc/config/linux.h +: UCLIBC_DYNAMIC_LINKER=/lib/ld-uClibc.so.0 +cp -v configure{,.orig} +sed -e '/FLAGS_FOR_TARGET.*\/lib\//s@-B[^ ]*/lib/@@g' configure.orig > \ + configure +mkdir -v _build +cd _build +#### +CFLAGS="$CFLAGS -pthread" \ +AR=ar ../configure --prefix=/cross-tools \ + --build=${CLFS_HOST} --target=${CLFS_TARGET} --host=${CLFS_HOST} \ + --disable-multilib --with-local-prefix=/tools --disable-nls \ + --enable-shared --enable-languages=c,c++ --enable-__cxa_atexit \ + --enable-c99 --enable-long-long --enable-threads=posix +#CFLAGS="$CFLAGS -pthread" +#need at /cross-tools/lib: ln -s libpthread.so.0 libpthread.so +#cp -dr /tools/include/* /cross-tools/include/ +CFLAGS="$CFLAGS -pthread" \ +make AS_FOR_TARGET="${CLFS_TARGET}-as" \ + LD_FOR_TARGET="${CLFS_TARGET}-ld" +make install + -- 2.11.4.GIT