分类: 嵌入式
2010-11-03 12:38:23
export PROJECT=arm export PRJROOT=/home/methus/${PROJECT} export PREFIX=${PRJROOT}/cross-tools export TARGET=arm-linux-gnueabi export TARGET_PREFIX=${PREFIX}/${TARGET} export PATH=${PATH}:${PREFIX}/bin cd $PRJROOT |
$ . env_setup.sh |
$mkdir -p build/{build-binutils,build-boot-gcc,build-glibc-header,build-glibc,build-gcc} $cd build |
$tar jxvf linux-2.6.35.8.tar.bz2 $cd linux-2.6.35.8 $make ARCH=arm headers_check $make ARCH=arm INSTALL_HDR_PATH=$TARGET_PREFIX headers_install |
$cd $PRJROOT/build $tar jxvf binutils-2.20.1.tar.bz2 $cd build-binutils $../binutils-2.20.1/configure --target=$TARGET --prefix=$PREFIX $make && make install |
$ cd $PRJROOT/build $ tar jxvf glibc-2.12.1.tar.bz2 //将glibc-linuxthreads和glibc-ports解压到glibc源码目录 $ cd glibc-2.12.1 $ tar jxvf glibc-linuxthreads-2.5.tar.bz2 $ tar jxvf glibc-ports-2.11.tar.bz2 $ mv glibc-ports-2.11 ports
$ cd ../build-glibc-headers $ ../glibc-2.12.1/configure --host=$TARGET --prefix="/usr" --enable-add-ons --with-headers=$TARGET_PREFIX/include $ make cross-compiling=yes install_root=$TARGET_PREFIX prefix="" install-headers //生成两个空文件,后续编译glibc/gcc时会用到 $ touch $TARGET_PREFIX/include/gnu/stubs.h $ touch $TARGET_PREFIX/include/bits/stdio_lim.h |
$ cd $PRJROOT/build $ cd build-boot-gcc $ ../gcc-4.5.1/configure --target=$TARGET --prefix=$PREFIX --disable-shared --with-headers=$TARGET_PREFIX/include --with-newlib --enable-languages=c $ make all-gcc $ make install-gcc $ make all-target-libgcc $ make install-target-libgcc |
$ cd $PRJROOT/build $ cd cd build-glibc $ echo "libc_cv_forced_unwind=yes" > config.cache $ echo "libc_cv_c_cleanup=yes" >> config.cache $ echo "libc_cv_arm_tls=yes" >> config.cache |
configure: error: forced unwind support is required |
$ cd $PREFIX/lib/gcc/arm-linux-gnueabi/4.5.1 $ ln -s libgcc.a libgcc_eh.a |
$ cd $PRJROOT/build/build-gcc $ CC=arm-linux-gnueabi-gcc ../glibc-2.12.1/configure --host=$TARGET --prefix="/usr" --enable-add-ons --with-headers=$PREFIX/include --cache-file=config.cache $ make |
../ports/sysdeps/arm/dl-machine.h:29:0: warning: "VALID_ELF_ABIVERSION" redefined ../sysdeps/unix/sysv/linux/ldsodefs.h:62:0: note: this is the location of the previous definition ../ports/sysdeps/arm/dl-machine.h:30:0: warning: "VALID_ELF_OSABI" redefined |
#define VALID_ELF_ABIVERSION(ver) (ver == 0) #define VALID_ELF_OSABI(osabi) \ (osabi == ELFOSABI_SYSV || osabi == ELFOSABI_ARM) #define VALID_ELF_HEADER(hdr,exp,size) \ memcmp (hdr,exp,size-2) == 0 \ && VALID_ELF_OSABI (hdr[EI_OSABI]) \ && VALID_ELF_ABIVERSION (hdr[EI_ABIVERSION]) |
#ifndef VALID_ELF_ABIVERSION |
$ make install_root=$TARGET_PREFIX prefix="" install $ sed -i 's|/lib/||g' $TARGET_RREFIX/lib/libc.so |
$ cd $PRJROOT/build/build-gcc $ ../gcc-4.5.1/configure --target=$TARGET --prefix=$PREFIX --enable-languages=c,c++ --disable-libgomp |
Pthreads are required to build libgomp |
$ make all $ make install |