gcc - C编译器
glibc - C标准库
binutils - 二进制工具集,如ld, ar, as等
kernle header files - Linux内核头文件
这4部分不同的版本的正确组合才能成功构建一个交叉编译器,可参考http://www.kegel.com/crosstool/
- Common archs: arm, sparc, x86_64, powerpc
- Common vendors: pc, softfloat, unknown
- Common OS: liniux, elf, uclinux
- Common libc: gnu, eabi, uclibc
1. 从kernel source package提取出头文件
2. 使用本地gcc编译binutils
3. 使用本地gcc编译出一个简单的不用libc的simple ARM-GCC
4. 使用simple ARM-GCC编译出glibc
5. 使用本地GCC编译出完整版的ARM-GCC
export ARCH=”arm”
export TARGET=”${ARCH}-unknown-linux-gnu”
export BUILD=”i686-unknown-linux-gnu”
export PREFIX=”/usr/${TARGET}”
export SYSROOT=”${PREFIX}/sysroot”
tar -xf binutils-*.tar.gz -C “${PREFIX}/src”
mkdir -p “${PREFIX}/BUILD/binutils”
cd “${PREFIX}/BUILD/binutils”
../../binutils-*/configure \
--prefix=${PREFIX} --target=${TARGET} \
--with-sysroot=${SYSROOT}
make && make install
tar -xf linux-*.tar.gz -C “${PREFIX}/src”
cd “${PREFIX}/src”
ln -s “${PREFIX}/src/linux-”* “${PREFIX}/src/linux”
cd “${PREFIX}/src/linux”
make mts6000_defconfig
make include/linux/version.h
mkdir -p “${SYSROOT}/usr/include”
cp -a include/linux “${SYSROOT}/usr/include”
cp -a include/asm-arm “${SYSROOT}/usr/include”
cp -a include/asm-generic “${SYSROOT}/usr/include”
tar -xf glibc-*.tar.gz -C “${PREFIX}/src”
mkdir -p “${PREFIX}/BUILD/glibc-headers”
cd “${PREFIX}/BUILD/glibc-headers”
../../glibc-*/configure \
--prefix=/usr –host=${TARGET}\
--with-headers=${SYSROOT}/usr/include
make cross-compiling=yes install_root=${SYSROOT} install-headers
touch ${SYSROOT}/usr/include/gnu/stubs.h
touch ${SYSROOT}/usr/include/bits/stdio_lim.h
tar -xf gcc-*.tar.gz -C “${PREFIX}/src”
mkdir -p “${PREFIX}/BUILD/gcc”
cd “${PREFIX}/BUILD/gcc”
patch: http://frank.harvard.edu/~coldwell/toolchain/t-linux.diff
../../gcc-*/configure \
–prefix=${PREFIX} –target=${TARGET}\
--enable-languages=c --with-sysroot=${SYSROOT}
make && make install
mkdir -p “${PREFIX}/BUILD/glibc”
cd “${PREFIX}/BUILD/glibc”
export CROSS_COMPILE=”${TARGET}-”
BUILD_CC=gcc CC=${CROSS_COMPILE}gcc \
AR=${CROSS_COMPILE}ar RANLIB=${CROSS_COMPILE}ranlib \
AS=${CROSS_COMPILE}as LD=${CROSS_COMPILE}ld \
../../glibc-*/configure --prefix=/usr –build=${BUILD}\
--host=${TARGET} –target=${TARGET}\
--with-headers=${SYSROOT}/usr/include
make && make install_root=”${SYSROOT}” install
1.Enter the build directory
cd “${PREFIX}/BUILD/gcc”2.Configure gcc to just generate gcc and g++ (now that we have glibc)
../../gcc-*/configure \
--prefix=${PREFIX} --target=${TARGET} \
--enable-languages=c,c++ --with-sysroot=${SYSROOT}3. Make gcc and install
make && make install
260



被折叠的 条评论
为什么被折叠?



