+ -
当前位置:首页 → 问答吧 → clfs-sysroot 20070915 自动编译脚本

clfs-sysroot 20070915 自动编译脚本

时间:2007-10-14

来源:互联网

敲命令很麻烦,干脆把命令都弄到一个Makefile里面了。
需要的可以按自己的要求修改。
如果发现错误的话,请指出。
本脚本只编译交叉编译环境。

代码:
CLFS = ${HOME}/armv5-root
PATH = ${CLFS}/cross-tools/bin:/bin:/usr/bin
CLFS_HOST = i486-cross-linux-gnu
CLFS_TARGET = armv5-linux

CLFS_SOURCE = ${HOME}/source
CLFS_BUILD = ${HOME}/build/${CLFS_TARGET}

CFLAGS =
CXXFLAGS = 
#GCC_EXTRA_CONFIG = --with-cpu=xscale --enable-cxx-flags=-mcpu=xscale
GCC_EXTRA_CONFIG = --with-arch=armv5 --enable-cxx-flags=-march=armv5

all: 
        exit 1

clean:
        rm -rf ${CLFS_BUILD}/*

distclean: clean
        rm -rf ${CLFS}/*

crosstools: dirs linux_headers binutils_cross glibc_headers gcc_static glibc_cross gcc_cross_final file_cross groff_cross shadow_cross

dirs:
        install -dv ${CLFS}
        install -dv ${CLFS_BUILD}
        mkdir -pv ${CLFS}/{bin,boot,dev,{etc/,}opt,home,lib,mnt}
        mkdir -pv ${CLFS}/{proc,media/{floppy,cdrom},sbin,srv,sys}
        mkdir -pv ${CLFS}/var/{lock,log,mail,run,spool}
        mkdir -pv ${CLFS}/var/{opt,cache,lib/{misc,locate},local}
        install -dv -m 0750 ${CLFS}/root
        install -dv -m 1777 ${CLFS}{/var,}/tmp
        mkdir -pv ${CLFS}/usr/{,local/}{bin,include,lib,sbin,src}
        mkdir -pv ${CLFS}/usr/{,local/}share/{doc,info,locale,man}
        mkdir -pv ${CLFS}/usr/{,local/}share/{misc,terminfo,zoneinfo}
        mkdir -pv ${CLFS}/usr/{,local/}share/man/man{1,2,3,4,5,6,7,8}
        for dir in ${CLFS}/usr{,/local}; do ln -sfnv share/{man,doc,info} $${dir}; done
        echo root::0:0:root:/root:/bin/bash > ${CLFS}/etc/passwd
        echo root:x:0: > ${CLFS}/etc/group
        echo root:x:0: >> ${CLFS}/etc/group
        echo bin:x:1: >> ${CLFS}/etc/group
        echo sys:x:2: >> ${CLFS}/etc/group
        echo kmem:x:3: >> ${CLFS}/etc/group
        echo tty:x:4: >> ${CLFS}/etc/group
        echo tape:x:5: >> ${CLFS}/etc/group
        echo daemon:x:6: >> ${CLFS}/etc/group
        echo floppy:x:7: >> ${CLFS}/etc/group
        echo disk:x:8: >> ${CLFS}/etc/group
        echo lp:x:9: >> ${CLFS}/etc/group
        echo dialout:x:10: >> ${CLFS}/etc/group
        echo audio:x:11: >> ${CLFS}/etc/group
        echo video:x:12: >> ${CLFS}/etc/group
        echo utmp:x:13: >> ${CLFS}/etc/group
        echo usb:x:14: >> ${CLFS}/etc/group
        echo cdrom:x:15: >> ${CLFS}/etc/group

linux_headers:
        tar -xvjf ${CLFS_SOURCE}/linux-headers-2.6.22.6-09032007.tar.bz2 -C ${CLFS_BUILD}
        install -dv ${CLFS}/usr/include
        cp -av ${CLFS_BUILD}/linux-headers-2.6.22.6/include/{asm-generic,linux,mtd,scsi,sound} ${CLFS}/usr/include
        cp -av ${CLFS_BUILD}/linux-headers-2.6.22.6/include/asm-arm ${CLFS}/usr/include/asm

binutils_cross:
        tar -xvjf ${CLFS_SOURCE}/binutils-2.18.tar.bz2 -C ${CLFS_BUILD}
        cd ${CLFS_BUILD}/binutils-2.18 && \
        patch -Np1 -i ${CLFS_SOURCE}/binutils-2.18-posix-1.patch && \
        mkdir -v ${CLFS_BUILD}/binutils-build
        cd ${CLFS_BUILD}/binutils-build && \
        AR=ar AS=as ../binutils-2.18/configure --prefix=${CLFS}/cross-tools --host=${CLFS_HOST} --target=${CLFS_TARGET} --with-sysroot=${CLFS} --disable-nls --enable-shared --disable-multilib && \
        make -C ${CLFS_BUILD}/binutils-build configure-host
        make -C ${CLFS_BUILD}/binutils-build
        make -C ${CLFS_BUILD}/binutils-build install
        cp -v ${CLFS_BUILD}/binutils-2.18/include/libiberty.h ${CLFS}/usr/include

glibc_headers:
        tar -xvjf ${CLFS_SOURCE}/glibc-2.6.1.tar.bz2 -C ${CLFS_BUILD}
        cd ${CLFS_BUILD}/glibc-2.6.1 && \
        cp configure{,.orig} && \
        sed -e 's/3.4/3.[0-9]/g' configure.orig > configure && \
        tar -xvjf ${CLFS_SOURCE}/glibc-ports-2.6.1.tar.bz2 && mv -v glibc-ports-2.6.1 ports
        mkdir -v ${CLFS_BUILD}/glibc-build
        cd ${CLFS_BUILD}/glibc-build && \
        echo "libc_cv_forced_unwind=yes" > config.cache && \
        echo "libc_cv_c_cleanup=yes" >> config.cache && \
        echo "libc_cv_arm_tls=yes" >> config.cache && \
        echo "install_root=${CLFS}" > configparms && \
        CC=gcc ../glibc-2.6.1/configure --prefix=/usr --host=${CLFS_TARGET} --build=${CLFS_HOST} --with-headers=${CLFS}/usr/include --cache-file=config.cache
        make -C ${CLFS_BUILD}/glibc-build install-headers
        cp -v ${CLFS_BUILD}/glibc-build/bits/stdio_lim.h ${CLFS}/usr/include/bits
        touch ${CLFS}/usr/include/gnu/stubs.h
        cp -v ${CLFS_BUILD}/glibc-build/../glibc-2.6.1/ports/sysdeps/unix/sysv/linux/arm/nptl/bits/pthreadtypes.h ${CLFS}/usr/include/bits
        rm -rf ${CLFS_BUILD}/glibc-2.6.1
        rm -rf ${CLFS_BUILD}/glibc-build

gcc_static:
        tar -xvjf ${CLFS_SOURCE}/gcc-4.2.1.tar.bz2 -C ${CLFS_BUILD}
        cd ${CLFS_BUILD}/gcc-4.2.1 && \
        patch -Np1 -i ${CLFS_SOURCE}/gcc-4.2.1-posix-1.patch && \
        patch -Np1 -i ${CLFS_SOURCE}/gcc-4.2.1-cross_search_paths-1.patch && \
        patch -Np1 -i ${CLFS_SOURCE}/gcc-4.2.1-arm-bigendian.patch
        mkdir -v ${CLFS_BUILD}/gcc-build
        cd ${CLFS_BUILD}/gcc-build && \
        ../gcc-4.2.1/configure --prefix=${CLFS}/cross-tools --host=${CLFS_HOST} --target=${CLFS_TARGET} ${GCC_EXTRA_CONFIG} --disable-multilib --with-sysroot=${CLFS} --disable-nls --disable-shared --enable-languages=c
        make -C ${CLFS_BUILD}/gcc-build all-gcc
        make -C ${CLFS_BUILD}/gcc-build install-gcc
        rm -rf ${CLFS_BUILD}/gcc-4.2.1
        rm -rf ${CLFS_BUILD}/gcc-build

glibc_cross:
        tar -xvjf ${CLFS_SOURCE}/glibc-2.6.1.tar.bz2 -C ${CLFS_BUILD}
        cd ${CLFS_BUILD}/glibc-2.6.1 && \
        tar -xvjf ${CLFS_SOURCE}/glibc-ports-2.6.1.tar.bz2 && mv -v glibc-ports-2.6.1 ports && \
        patch -Np1 -i ${CLFS_SOURCE}/glibc-2.6.1-libgcc_eh-1.patch && \
        patch -Np1 -i ${CLFS_SOURCE}/glibc-2.6.1-localedef_segfault-1.patch && \
        patch -Np1 -i ${CLFS_SOURCE}/glibc-2.6.1-cross_hacks-1.patch && \
        patch -Np1 -i ${CLFS_SOURCE}/glibc-2.6.1-RTLD_SINGLE_THREAD_P-1.patch
        mkdir -v ${CLFS_BUILD}/glibc-build
        cd ${CLFS_BUILD}/glibc-build && \
        echo "libc_cv_forced_unwind=yes" > config.cache && \
        echo "libc_cv_c_cleanup=yes" >> config.cache && \
        echo "install_root=${CLFS}" > configparms && \
        BUILD_CC="gcc" CC="${CLFS_TARGET}-gcc" AR="${CLFS_TARGET}-ar" RANLIB="${CLFS_TARGET}-ranlib" ../glibc-2.6.1/configure --prefix=/usr --libexecdir=/usr/lib/glibc --host=${CLFS_TARGET} --build=${CLFS_HOST} --disable-profile --enable-add-ons --with-tls --enable-kernel=2.6.0 --with-__thread --with-binutils=${CLFS}/cross-tools/bin --with-headers=${CLFS}/usr/include --cache-file=config.cache
        make -C ${CLFS_BUILD}/glibc-build
        make -C ${CLFS_BUILD}/glibc-build install
        #make -C ${CLFS_BUILD}/glibc-build localedata/install-locales
        
        echo "# Begin /etc/nsswitch.conf" > ${CLFS}/etc/nsswitch.conf
        echo "" >> ${CLFS}/etc/nsswitch.conf
        echo "passwd: files" >> ${CLFS}/etc/nsswitch.conf
        echo "group: files" >> ${CLFS}/etc/nsswitch.conf
        echo "shadow: files" >> ${CLFS}/etc/nsswitch.conf
        echo "" >> ${CLFS}/etc/nsswitch.conf
        echo "hosts: files dns" >> ${CLFS}/etc/nsswitch.conf
        echo "networks: files" >> ${CLFS}/etc/nsswitch.conf
        echo "" >> ${CLFS}/etc/nsswitch.conf
        echo "protocols: files" >> ${CLFS}/etc/nsswitch.conf
        echo "services: files" >> ${CLFS}/etc/nsswitch.conf
        echo "ethers: files" >> ${CLFS}/etc/nsswitch.conf
        echo "rpc: files" >> ${CLFS}/etc/nsswitch.conf
        echo "" >> ${CLFS}/etc/nsswitch.conf
        echo "# End /etc/nsswitch.conf" >> ${CLFS}/etc/nsswitch.conf
        echo "# Begin /etc/ld.so.conf" > ${CLFS}/etc/ld.so.conf
        echo "" >> ${CLFS}/etc/ld.so.conf
        echo "/usr/local/lib" >> ${CLFS}/etc/ld.so.conf
        echo "/opt/lib" >> ${CLFS}/etc/ld.so.conf
        echo "" >> ${CLFS}/etc/ld.so.conf
        echo "# End /etc/ld.so.conf" >> ${CLFS}/etc/ld.so.conf

gcc_cross_final:
        tar -xvjf ${CLFS_SOURCE}/gcc-4.2.1.tar.bz2 -C ${CLFS_BUILD}
        cd ${CLFS_BUILD}/gcc-4.2.1 && \
        patch -Np1 -i ${CLFS_SOURCE}/gcc-4.2.1-posix-1.patch && \
        patch -Np1 -i ${CLFS_SOURCE}/gcc-4.2.1-cross_search_paths-1.patch && \
        patch -Np1 -i ${CLFS_SOURCE}/gcc-4.2.1-arm-bigendian.patch
        mkdir -v ${CLFS_BUILD}/gcc-build
        cd ${CLFS_BUILD}/gcc-build && \
        ../gcc-4.2.1/configure --prefix=${CLFS}/cross-tools --host=${CLFS_HOST} --target=${CLFS_TARGET} ${GCC_EXTRA_CONFIG} --disable-multilib --with-sysroot=${CLFS} --disable-nls --enable-shared --enable-languages=c,c++ --enable-__cxa_atexit --enable-c99 --enable-long-long --enable-threads=posix
        make -C ${CLFS_BUILD}/gcc-build
        make -C ${CLFS_BUILD}/gcc-build install

file_cross:
        tar -xvzf ${CLFS_SOURCE}/file-4.21.tar.gz -C ${CLFS_BUILD}
        cd ${CLFS_BUILD}/file-4.21 && \
        ./configure --prefix=${CLFS}/cross-tools && \
        make && make install

groff_cross:
        tar -xvzf ${CLFS_SOURCE}/groff-1.19.2.tar.gz -C ${CLFS_BUILD}
        cd ${CLFS_BUILD}/groff-1.19.2 && \
        PAGE=A4 ./configure --prefix=${CLFS}/cross-tools --without-x
        make -C ${CLFS_BUILD}/groff-1.19.2
        make -C ${CLFS_BUILD}/groff-1.19.2 install

shadow_cross:
        tar -xvjf ${CLFS_SOURCE}/shadow-4.0.18.1.tar.bz2 -C ${CLFS_BUILD}
        cd ${CLFS_BUILD}/shadow-4.0.18.1 && \
        patch -Np1 -i ${CLFS_SOURCE}/shadow-4.0.18.1-useradd_fix-1.patch && \
        patch -Np1 -i ${CLFS_SOURCE}/shadow-4.0.18.1-sysroot_hacks-1.patch && \
        echo "shadow_cv_passwd_dir=${CLFS}/bin" > config.cache && \
        ./configure --prefix=${CLFS}/cross-tools --sbindir=${CLFS}/cross-tools/bin --sysconfdir=${CLFS}/etc --disable-shared --without-libpam --without-audit --without-selinux --program-prefix=${CLFS_TARGET}- --cache-file=config.cache && \
        cp config.h{,.orig} && \
        sed "/PASSWD_PROGRAM/s/passwd/${CLFS_TARGET}-&/" config.h.orig > config.h
        make -C ${CLFS_BUILD}/shadow-4.0.18.1
        make -C ${CLFS_BUILD}/shadow-4.0.18.1 install
另附gcc arm大尾模式patch
上传的附件
Makefile.clfs.sysroot.gz (2.1 KB, 21 次查看)
gcc-4.2.1-arm-bigendian.patch.gz (1.3 KB, 13 次查看)

作者: 高热   发布时间: 2007-10-14