免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 722 | 回复: 0
打印 上一主题 下一主题

构建临时系统 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-08 21:45 |只看该作者 |倒序浏览
    感觉一行一行的复制太慢了,觉得还是用脚本来的方便,所以直接将构建临时系统这一章节全写成脚本,将下面的内容写入文件中,运行就可以,很是方便。

    和手册上的不同,除了diffutils-2.8.7这个包的make上没有加-j3参数外,其它的包我都使用了-j3参数,为的是提高编译速度。diffutils-2.8.7没有加-j3是因为加上-j3后编译无法通过。
set -e的作用是如果脚本出现错误后会停下来,而不是再去运行下一条命令,感谢LFS-青钢镜的指点。
    建议运行脚本时使用重定向命令将日志写入一个日志文件中,以方便查看和排错。
以下脚本已经测试通过。
#!/bin/bash
#Build Variables
set -e
export CC="${CLFS_TARGET}-gcc"
export CXX="${CLFS_TARGET}-g++"
export AR="${CLFS_TARGET}-ar"
export AS="${CLFS_TARGET}-as"
export RANLIB="${CLFS_TARGET}-ranlib"
export LD="${CLFS_TARGET}-ld"
export STRIP="${CLFS_TARGET}-strip"
echo export CC=\""${CC}\"" >> ~/.bashrc
echo export CXX=\""${CXX}\"" >> ~/.bashrc
echo export AR=\""${AR}\"" >> ~/.bashrc
echo export AS=\""${AS}\"" >> ~/.bashrc
echo export RANLIB=\""${RANLIB}\"" >> ~/.bashrc
echo export LD=\""${LD}\"" >> ~/.bashrc
echo export STRIP=\""${STRIP}\"" >> ~/.bashrc

#6.3. Binutils-2.18
echo "6.3. Binutils-2.18"
cd ~/sources
tar xf binutils-2.18.tar.bz2
cd binutils-2.18
patch -Np1 -i ../binutils-2.18-posix-1.patch
patch -Np1 -i ../binutils-2.18-genscripts_multilib-1.patch
mkdir -v ../binutils-build
cd ../binutils-build
CC="${CC} ${BUILD64}" \
    ../binutils-2.18/configure --prefix=/tools \
    --libdir=/tools/lib64 --with-lib-path=/tools/lib \
    --build=${CLFS_HOST} --host=${CLFS_TARGET} --target=${CLFS_TARGET} \
    --disable-nls --enable-shared --enable-64-bit-bfd
make -j3 configure-host
make -j3
make -j3 install
cd ~/sources
rm -rf binutils-2.18 binutils-build

#6.4. GCC-4.2.1
echo "6.4. GCC-4.2.1"
cd ~/sources
tar xf gcc-4.2.1.tar.bz2
cd gcc-4.2.1
patch -Np1 -i ../gcc-4.2.1-specs-1.patch
patch -Np1 -i ../gcc-4.2.1-posix-1.patch
patch -Np1 -i ../gcc-4.2.1-cross_search_paths-1.patch
cp -v gcc/cppdefault.c{,.orig}
sed -e '/#define
[email=STANDARD_INCLUDE_DIR/s@"/usr/include"@0@g']STANDARD_INCLUDE_DIR/s@"/usr/include"@0@g'[/email]
\
    gcc/cppdefault.c.orig > gcc/cppdefault.c
cp -v gcc/Makefile.in{,.orig}
sed -e 's@\(^NATIVE_SYSTEM_HEADER_DIR =\).*@\1 /tools/include@g' \
    gcc/Makefile.in.orig > gcc/Makefile.in
cp -v gcc/Makefile.in{,.orig2}
sed -e "/MULTILIBS/s@\$(GCC_FOR_TARGET)@/cross-tools/bin/${CC}@g" \
   gcc/Makefile.in.orig2 > gcc/Makefile.in
mkdir -v ../gcc-build
cd ../gcc-build
CC="${CC} ${BUILD64}" CXX="${CXX} ${BUILD64}" \
    ../gcc-4.2.1/configure --prefix=/tools --libdir=/tools/lib64 \
    --build=${CLFS_HOST} --host=${CLFS_TARGET} --target=${CLFS_TARGET} \
    --with-local-prefix=/tools --enable-long-long --enable-c99 \
    --enable-shared --enable-threads=posix --enable-__cxa_atexit \
    --disable-nls --enable-languages=c,c++ --disable-libstdcxx-pch
make -j3 AS_FOR_TARGET="${AS}" \
    LD_FOR_TARGET="${LD}"
make -j3 install
cd ~/sources
rm -rf gcc-4.2.1 gcc-build

#6.5. Ncurses-5.6
echo "6.5. Ncurses-5.6"
cd ~/sources
tar xf ncurses-5.6.tar.gz
cd ncurses-5.6
patch -Np1 -i ../ncurses-5.6-bash_fix-1.patch
CC="${CC} ${BUILD64}" CXX="${CXX} ${BUILD64}" \
   ./configure --prefix=/tools --with-shared \
   --build=${CLFS_HOST} --host=${CLFS_TARGET} \
   --without-debug --without-ada \
   --enable-overwrite --with-build-cc=gcc \
   --libdir=/tools/lib64
make -j3
make -j3 install
cd ~/sources
rm -rf ncurses-5.6

#6.6. Bash-3.2
echo "6.6. Bash-3.2"
cd ~/sources
tar xf bash-3.2.tar.gz
cd bash-3.2
patch -Np1 -i ../bash-3.2-fixes-5.patch
cat > config.cache

#6.7. Bzip2-1.0.4
echo "6.7. Bzip2-1.0.4"
cd ~/sources
tar xf bzip2-1.0.4.tar.gz
cd bzip2-1.0.4
cp -v Makefile{,.orig}
sed -e
[email='s@^\(all:.*\]'s@^\(all:.*\[/email]
) test@\1@g' \
    -e 's@/lib\(/\| \|$\)@/lib64\1@g' Makefile.orig > Makefile
make -j3 CC="${CC} ${BUILD64}" AR="${AR}" RANLIB="${RANLIB}"
make -j3 PREFIX=/tools install
cd ~/sources
rm -rf bzip2-1.0.4
#6.8. Coreutils-6.9
echo "6.8. Coreutils-6.9"
cd ~/sources
tar xf coreutils-6.9.tar.bz2
cd coreutils-6.9
sed -i "s/futimens/gl_&/" $(grep -lr futimens *)
CC="${CC} ${BUILD64}" ./configure --prefix=/tools \
   --build=${CLFS_HOST} --host=${CLFS_TARGET}
touch man/touch.1
make -j3
make -j3 install
cd ~/sources
rm -rf coreutils-6.9

#6.9. Diffutils-2.8.7
echo "6.9. Diffutils-2.8.7"
cd ~/sources
tar xf diffutils-2.8.7.tar.gz
cd diffutils-2.8.7
CC="${CC} ${BUILD64}" ./configure --prefix=/tools \
  --build=${CLFS_HOST} --host=${CLFS_TARGET}
make -j3
make -j3 install
cd ~/sources
rm -rf diffutils-2.8.7

# 6.10. Findutils-4.2.31
echo "6.10. Findutils-4.2.31"
cd ~/sources
tar xf findutils-4.2.31.tar.gz
cd findutils-4.2.31
echo "am_cv_func_working_getline=yes" >> config.cache
CC="${CC} ${BUILD64}" ./configure --prefix=/tools \
   --build=${CLFS_HOST} --host=${CLFS_TARGET} --cache-file=config.cache
make -j3
make -j3 install
cd ~/sources
rm -rf findutils-4.2.31

# 6.11. Zlib-1.2.3
echo "6.11. Zlib-1.2.3"
cd ~/sources
tar xf zlib-1.2.3.tar.gz
cd zlib-1.2.3
CC="${CC} ${BUILD64}" \
   ./configure --prefix=/tools --shared --libdir=/tools/lib64
make -j3
make -j3 install
cd ~/sources
rm -rf zlib-1.2.3
# 6.12. File-4.21
echo  "6.12. File-4.21"
cd ~/sources
tar xf file-4.21.tar.gz
cd file-4.21
CC="${CC} ${BUILD64}" ./configure --prefix=/tools \
   --libdir=/tools/lib64 --build=${CLFS_HOST} --host=${CLFS_TARGET}
make -j3
make -j3 install
cd ~/sources
rm -rf file-4.21

#6.13. Gawk-3.1.5
echo "6.13. Gawk-3.1.5"
cd ~/sources
tar xf gawk-3.1.5.tar.bz2
cd gawk-3.1.5
CC="${CC} ${BUILD64}" \
   ./configure --prefix=/tools \
   --build=${CLFS_HOST} --host=${CLFS_TARGET}
make -j3
make -j3 install
cd ~/sources
rm -rf gawk-3.1.5

#6.14. Gettext-0.16.1
echo "6.14. Gettext-0.16.1"
cd ~/sources
tar xf gettext-0.16.1.tar.gz
cd gettext-0.16.1
cd gettext-tools
CC="${CC} ${BUILD64}" CXX="${CXX} ${BUILD64}" \
   ./configure --prefix=/tools \
   --build=${CLFS_HOST} --host=${CLFS_TARGET} --disable-shared
make -C  gnulib-lib
make -C src msgfmt
cp -v src/msgfmt /tools/bin
cd ~/sources
rm -rf gettext-0.16.1

#6.15. Grep-2.5.3
echo "6.15. Grep-2.5.3"
cd ~/sources
tar xf grep-2.5.3.tar.bz2
cd grep-2.5.3
CC="${CC} ${BUILD64}" ./configure --prefix=/tools \
   --build=${CLFS_HOST} --host=${CLFS_TARGET} \
   --disable-perl-regexp
make -j3
make -j3 install
cd ~/sources
rm -rf  grep-2.5.3

#6.16. Gzip-1.3.12
echo "6.16. Gzip-1.3.12"
cd ~/sources
tar xf gzip-1.3.12.tar.gz
cd gzip-1.3.12
sed -i "s/futimens/gl_&/" $(grep -lr futimens *)
CC="${CC} ${BUILD64}" ./configure --prefix=/tools \
  --build=${CLFS_HOST} --host=${CLFS_TARGET}
make -j3
make -j3 install
cd ~/sources
rm -rf gzip-1.3.12

#6.17. Make-3.81
echo "6.17. Make-3.81"
cd ~/sources
tar xf make-3.81.tar.bz2
cd make-3.81
CC="${CC} ${BUILD64}" ./configure --prefix=/tools \
   --build=${CLFS_HOST} --host=${CLFS_TARGET}
make -j3
make -j3 install
cd ~/sources
rm -rf make-3.81

#6.18. Patch-2.5.9
echo "6.18. Patch-2.5.9"
cd ~/sources
tar xf patch-2.5.9.tar.gz
cd patch-2.5.9
CC="${CC} ${BUILD64}" ./configure --prefix=/tools \
    --build=${CLFS_HOST} --host=${CLFS_TARGET}
make -j3
make -j3 install
cd ~/sources
rm -rf patch-2.5.9
#6.19. Sed-4.1.5
echo "6.19. Sed-4.1.5"
cd ~/sources
tar xf sed-4.1.5.tar.gz
cd sed-4.1.5
CC="${CC} ${BUILD64}" ./configure --prefix=/tools \
   --build=${CLFS_HOST} --host=${CLFS_TARGET}
make -j3
make -j3 install
cd ~/sources
rm -rf sed-4.1.5

#6.20. Tar-1.18
echo "6.20. Tar-1.18"
cd ~/sources
tar xf tar-1.18.tar.bz2
cd tar-1.18
CC="${CC} ${BUILD64}" ./configure --prefix=/tools \
   --build=${CLFS_HOST} --host=${CLFS_TARGET}
make -j3
make -j3 install
cd ~/sources
rm -rf tar-1.18

#6.21. Texinfo-4.9
echo "6.21. Texinfo-4.9"
cd ~/sources
tar xf texinfo-4.9.tar.bz2
cd texinfo-4.9
CC="${CC} ${BUILD64}" ./configure --prefix=/tools \
   --build=${CLFS_HOST} --host=${CLFS_TARGET}
make -j3
make -j3 install
cd ~/sources
rm -rf texinfo-4.9
/tools/lib/libc.so.6
/tools/lib64/libc.so.6
/tools/bin/gcc -v


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/43917/showart_377303.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP