LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1167|回复: 0

clfs-sysroot 20070915 自动编译脚本

[复制链接]
发表于 2007-10-14 19:56:40 | 显示全部楼层 |阅读模式
敲命令很麻烦,干脆把命令都弄到一个Makefile里面了。
需要的可以按自己的要求修改。
如果发现错误的话,请指出。
本脚本只编译交叉编译环境。

  1. CLFS = ${HOME}/armv5-root
  2. PATH = ${CLFS}/cross-tools/bin:/bin:/usr/bin
  3. CLFS_HOST = i486-cross-linux-gnu
  4. CLFS_TARGET = armv5-linux

  5. CLFS_SOURCE = ${HOME}/source
  6. CLFS_BUILD = ${HOME}/build/${CLFS_TARGET}

  7. CFLAGS =
  8. CXXFLAGS =
  9. #GCC_EXTRA_CONFIG = --with-cpu=xscale --enable-cxx-flags=-mcpu=xscale
  10. GCC_EXTRA_CONFIG = --with-arch=armv5 --enable-cxx-flags=-march=armv5

  11. all:
  12.         exit 1

  13. clean:
  14.         rm -rf ${CLFS_BUILD}/*

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

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

  18. dirs:
  19.         install -dv ${CLFS}
  20.         install -dv ${CLFS_BUILD}
  21.         mkdir -pv ${CLFS}/{bin,boot,dev,{etc/,}opt,home,lib,mnt}
  22.         mkdir -pv ${CLFS}/{proc,media/{floppy,cdrom},sbin,srv,sys}
  23.         mkdir -pv ${CLFS}/var/{lock,log,mail,run,spool}
  24.         mkdir -pv ${CLFS}/var/{opt,cache,lib/{misc,locate},local}
  25.         install -dv -m 0750 ${CLFS}/root
  26.         install -dv -m 1777 ${CLFS}{/var,}/tmp
  27.         mkdir -pv ${CLFS}/usr/{,local/}{bin,include,lib,sbin,src}
  28.         mkdir -pv ${CLFS}/usr/{,local/}share/{doc,info,locale,man}
  29.         mkdir -pv ${CLFS}/usr/{,local/}share/{misc,terminfo,zoneinfo}
  30.         mkdir -pv ${CLFS}/usr/{,local/}share/man/man{1,2,3,4,5,6,7,8}
  31.         for dir in ${CLFS}/usr{,/local}; do ln -sfnv share/{man,doc,info} $${dir}; done
  32.         echo root::0:0:root:/root:/bin/bash > ${CLFS}/etc/passwd
  33.         echo root:x:0: > ${CLFS}/etc/group
  34.         echo root:x:0: >> ${CLFS}/etc/group
  35.         echo bin:x:1: >> ${CLFS}/etc/group
  36.         echo sys:x:2: >> ${CLFS}/etc/group
  37.         echo kmem:x:3: >> ${CLFS}/etc/group
  38.         echo tty:x:4: >> ${CLFS}/etc/group
  39.         echo tape:x:5: >> ${CLFS}/etc/group
  40.         echo daemon:x:6: >> ${CLFS}/etc/group
  41.         echo floppy:x:7: >> ${CLFS}/etc/group
  42.         echo disk:x:8: >> ${CLFS}/etc/group
  43.         echo lp:x:9: >> ${CLFS}/etc/group
  44.         echo dialout:x:10: >> ${CLFS}/etc/group
  45.         echo audio:x:11: >> ${CLFS}/etc/group
  46.         echo video:x:12: >> ${CLFS}/etc/group
  47.         echo utmp:x:13: >> ${CLFS}/etc/group
  48.         echo usb:x:14: >> ${CLFS}/etc/group
  49.         echo cdrom:x:15: >> ${CLFS}/etc/group

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

  55. binutils_cross:
  56.         tar -xvjf ${CLFS_SOURCE}/binutils-2.18.tar.bz2 -C ${CLFS_BUILD}
  57.         cd ${CLFS_BUILD}/binutils-2.18 && \
  58.         patch -Np1 -i ${CLFS_SOURCE}/binutils-2.18-posix-1.patch && \
  59.         mkdir -v ${CLFS_BUILD}/binutils-build
  60.         cd ${CLFS_BUILD}/binutils-build && \
  61.         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 && \
  62.         make -C ${CLFS_BUILD}/binutils-build configure-host
  63.         make -C ${CLFS_BUILD}/binutils-build
  64.         make -C ${CLFS_BUILD}/binutils-build install
  65.         cp -v ${CLFS_BUILD}/binutils-2.18/include/libiberty.h ${CLFS}/usr/include

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

  85. gcc_static:
  86.         tar -xvjf ${CLFS_SOURCE}/gcc-4.2.1.tar.bz2 -C  ${CLFS_BUILD}
  87.         cd ${CLFS_BUILD}/gcc-4.2.1 && \
  88.         patch -Np1 -i ${CLFS_SOURCE}/gcc-4.2.1-posix-1.patch && \
  89.         patch -Np1 -i ${CLFS_SOURCE}/gcc-4.2.1-cross_search_paths-1.patch && \
  90.         patch -Np1 -i ${CLFS_SOURCE}/gcc-4.2.1-arm-bigendian.patch
  91.         mkdir -v ${CLFS_BUILD}/gcc-build
  92.         cd ${CLFS_BUILD}/gcc-build && \
  93.         ../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
  94.         make -C ${CLFS_BUILD}/gcc-build all-gcc
  95.         make -C ${CLFS_BUILD}/gcc-build install-gcc
  96.         rm -rf ${CLFS_BUILD}/gcc-4.2.1
  97.         rm -rf ${CLFS_BUILD}/gcc-build

  98. glibc_cross:
  99.         tar -xvjf ${CLFS_SOURCE}/glibc-2.6.1.tar.bz2 -C ${CLFS_BUILD}
  100.         cd ${CLFS_BUILD}/glibc-2.6.1 && \
  101.         tar -xvjf ${CLFS_SOURCE}/glibc-ports-2.6.1.tar.bz2 && mv -v glibc-ports-2.6.1 ports && \
  102.         patch -Np1 -i ${CLFS_SOURCE}/glibc-2.6.1-libgcc_eh-1.patch && \
  103.         patch -Np1 -i ${CLFS_SOURCE}/glibc-2.6.1-localedef_segfault-1.patch && \
  104.         patch -Np1 -i ${CLFS_SOURCE}/glibc-2.6.1-cross_hacks-1.patch && \
  105.         patch -Np1 -i ${CLFS_SOURCE}/glibc-2.6.1-RTLD_SINGLE_THREAD_P-1.patch
  106.         mkdir -v ${CLFS_BUILD}/glibc-build
  107.         cd ${CLFS_BUILD}/glibc-build && \
  108.         echo "libc_cv_forced_unwind=yes" > config.cache && \
  109.         echo "libc_cv_c_cleanup=yes" >> config.cache && \
  110.         echo "install_root=${CLFS}" > configparms && \
  111.         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
  112.         make -C ${CLFS_BUILD}/glibc-build
  113.         make -C ${CLFS_BUILD}/glibc-build install
  114.         #make -C ${CLFS_BUILD}/glibc-build localedata/install-locales
  115.        
  116.         echo "# Begin /etc/nsswitch.conf" > ${CLFS}/etc/nsswitch.conf
  117.         echo "" >>  ${CLFS}/etc/nsswitch.conf
  118.         echo "passwd: files" >>  ${CLFS}/etc/nsswitch.conf
  119.         echo "group: files" >>  ${CLFS}/etc/nsswitch.conf
  120.         echo "shadow: files" >>  ${CLFS}/etc/nsswitch.conf
  121.         echo "" >>  ${CLFS}/etc/nsswitch.conf
  122.         echo "hosts: files dns" >>  ${CLFS}/etc/nsswitch.conf
  123.         echo "networks: files" >>  ${CLFS}/etc/nsswitch.conf
  124.         echo "" >>  ${CLFS}/etc/nsswitch.conf
  125.         echo "protocols: files" >>  ${CLFS}/etc/nsswitch.conf
  126.         echo "services: files" >>  ${CLFS}/etc/nsswitch.conf
  127.         echo "ethers: files" >>  ${CLFS}/etc/nsswitch.conf
  128.         echo "rpc: files" >>  ${CLFS}/etc/nsswitch.conf
  129.         echo "" >>  ${CLFS}/etc/nsswitch.conf
  130.         echo "# End /etc/nsswitch.conf" >>  ${CLFS}/etc/nsswitch.conf
  131.         echo "# Begin /etc/ld.so.conf" > ${CLFS}/etc/ld.so.conf
  132.         echo "" >> ${CLFS}/etc/ld.so.conf
  133.         echo "/usr/local/lib" >> ${CLFS}/etc/ld.so.conf
  134.         echo "/opt/lib" >> ${CLFS}/etc/ld.so.conf
  135.         echo "" >> ${CLFS}/etc/ld.so.conf
  136.         echo "# End /etc/ld.so.conf" >> ${CLFS}/etc/ld.so.conf

  137. gcc_cross_final:
  138.         tar -xvjf ${CLFS_SOURCE}/gcc-4.2.1.tar.bz2 -C  ${CLFS_BUILD}
  139.         cd ${CLFS_BUILD}/gcc-4.2.1 && \
  140.         patch -Np1 -i ${CLFS_SOURCE}/gcc-4.2.1-posix-1.patch && \
  141.         patch -Np1 -i ${CLFS_SOURCE}/gcc-4.2.1-cross_search_paths-1.patch && \
  142.         patch -Np1 -i ${CLFS_SOURCE}/gcc-4.2.1-arm-bigendian.patch
  143.         mkdir -v ${CLFS_BUILD}/gcc-build
  144.         cd ${CLFS_BUILD}/gcc-build && \
  145.         ../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
  146.         make -C ${CLFS_BUILD}/gcc-build
  147.         make -C ${CLFS_BUILD}/gcc-build install

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

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

  159. shadow_cross:
  160.         tar -xvjf ${CLFS_SOURCE}/shadow-4.0.18.1.tar.bz2 -C ${CLFS_BUILD}
  161.         cd ${CLFS_BUILD}/shadow-4.0.18.1 && \
  162.         patch -Np1 -i ${CLFS_SOURCE}/shadow-4.0.18.1-useradd_fix-1.patch && \
  163.         patch -Np1 -i ${CLFS_SOURCE}/shadow-4.0.18.1-sysroot_hacks-1.patch && \
  164.         echo "shadow_cv_passwd_dir=${CLFS}/bin" > config.cache && \
  165.         ./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 && \
  166.         cp config.h{,.orig} && \
  167.         sed "/PASSWD_PROGRAM/s/passwd/${CLFS_TARGET}-&/" config.h.orig > config.h
  168.         make -C ${CLFS_BUILD}/shadow-4.0.18.1
  169.         make -C ${CLFS_BUILD}/shadow-4.0.18.1 install

复制代码


另附gcc arm大尾模式patch

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表