一步一步打造自己的Linux--LFS6.3安装过程(一)
[转]什么是LFS,BLFS,ALFS,HLFS之间的区别

一步一步打造自己的Linux--LFS6.3安装过程(二)

獨立的圓 posted @ 2008年2月07日 23:21 in Linux with tags LFS , 9859 阅读

 本站文章已轉移,敬請移步:http://www.xxb.me/ ,謝謝!

(注:本文于2月28日修改)

目录:

调整工具链
测试工具链的调整
测试工具安装
GCC-4.1.2 - Pass 2
Binutils-2.17 - Pass 2
ncurses-5.6
bash-3.2
bzip2-1.0.4
coreutils-6.9
diffutils-2.8.1
findutils-4.2.3
1gawk-3.1.5
gettext-0.16.1

调整工具链

  1. $ mv -v /tools/bin/{ld,ld-old}
  2. $ mv -v /tools/$(gcc -dumpmachine)/bin/{ld,ld-old}
  3. $ mv -v /tools/bin/{ld-new,ld}
  4. $ ln -sv /tools/bin/ld /tools/$(gcc -dumpmachine)/bin/ld
  5.  
  6. $ gcc -dumpspecs | sed 's@^/lib/ld-linux.so.2@/tools&@g' \
     > `dirname $(gcc -print-libgcc-file-name)`/specs
  7.  
  8. $ GCC_INCLUDEDIR=`dirname $(gcc -print-libgcc-file-name)`/include &&
    find ${GCC_INCLUDEDIR}/* -maxdepth 0 -xtype d -exec rm -rvf '{}' \; &&
    rm -vf `grep -l "DO NOT EDIT THIS FILE" ${GCC_INCLUDEDIR}/*` &&
    unset GCC_INCLUDEDIR

测试工具链的调整

  1. $ echo 'main(){}' > dummy.c
  2. $ cc dummy.c
  3. $ readelf -l a.out | grep ': /tools'

如果输出大致如下

[Requesting program interpreter: /tools/lib/ld-linux.so.2]

则表示调整成功,因为所有的库已经连接到了/tools/lib下。

  1. $ rm -v dummy.c a.out

测试工具安装
说明:这部分将安装3个用于第六章各种源码包编译后的测试的工具,如果你不打算做make check之类的事情,那么这3个包可以不装。
Tcl-8.4.15  Expect-5.43.0  DejaGNU-1.4.4

  1. $ tar xvf /lfs-sources/tcl8.4.15-src.tar.gz
  2. $ cd tcl8.4.15/unix
  3. $ ./configure --prefix=/tools
  4. $ make
  5. $ make install
  6. $ make install-private-headers
  7. $ ln -sv tclsh8.4 /tools/bin/tclsh
  1. $ cd $LFS/sources
  2. $ tar xvf /lfs-sources/expect-5.43.0.tar.gz
  3. $ cd expect-5.43
  4. $ patch -Np1 -i /lfs-sources/expect-5.43.0-spawn-1.patch
  5. $ cp configure{,.bak}
  6. $ sed 's:/usr/local/bin:/bin:' configure.bak > configure
  7. $ ./configure --prefix=/tools --with-tcl=/tools/lib \
      --with-tclinclude=/tools/include --with-x=no
  8. $ make
  9. $ make SCRIPTS="" install
  10. $ cd $LFS/sources
  1. $ tar xvf /lfs-sources/dejagnu-1.4.4.tar.gz
  2. $ cd dejagnu-1.4.4
  3. $ ./configure --prefix=/tools
  4. $ make install
  5. $ cd ..
  6. $ rm -rf tcl8.4.15 expect-5.43.0 dejagnu-1.4.4

测试宿主系统中PTY是否设置正常:

  1. $ expect -c "spawn ls"

如果得到下面的回答:

The system has no more ptys.
Ask your system administrator to create more.

我的正常,显示:

spawn ls

GCC-4.1.2 - Pass 2 (约50分钟 不包括make check)

  1. $ tar xvf /lfs-sources/gcc-4.1.2.tar.bz2
  2. $ cd gcc-4.1.2
  3. $ cp -v gcc/Makefile.in{,.orig}
  4. $ sed 's@\./fixinc\.sh@-c true@' gcc/Makefile.in.orig > gcc/Makefile.in
  5. $ cp -v gcc/Makefile.in{,.tmp}
  6. $ sed 's/^XCFLAGS =$/& -fomit-frame-pointer/' gcc/Makefile.in.tmp \
    > gcc/Makefile.in
  7. $ patch -Np1 -i /lfs-sources/gcc-4.1.2-specs-1.patch
  8. $ mkdir -v ../gcc-build
  9. $ cd ../gcc-build
  10. $ ../gcc-4.1.2/configure --prefix=/tools \
        --with-local-prefix=/tools --enable-clocale=gnu \
        --enable-shared --enable-threads=posix \
        --enable-__cxa_atexit --enable-languages=c,c++ \
        --disable-libstdcxx-pch
  11. $ make
  12. $ make -k check  #这步巨慢,有人超过四小时还没好,视机器性能而定,我没耐性,Ctrl+C跳过
  13. $ make install
  14. $ cd ..
  15. $ rm -rf gcc-4.1.2 gcc-build

再次测试工具链的调整,以确保刚刚编译的gcc正确工作:

  1. $ echo 'main(){}' > dummy.c
  2. $ cc dummy.c
  3. $ readelf -l a.out | grep ': /tools'

如果一切正常,应该不会出错,而且最后一个命令的结果应当是:

[Requesting program interpreter: /tools/lib/ld-linux.so.2]

确定一切正常后,删除测试文件:

  1. $ rm -v dummy.c a.out

Binutils-2.17 - Pass 2   (10分钟)

  1. $ tar xvf /lfs-sources/binutils-2.17.tar.bz2
  2. $ mkdir -v binutils-build
  3. $ cd binutils-build
  4. $ ../binutils-2.17/configure --prefix=/tools \
        --disable-nls --with-lib-path=/tools/lib
  5. $ make
  6. $ make check  #同样跳过,下同
  7. $ make install
  8. $ make -C ld clean
  9. $ make -C ld LIB_PATH=/usr/lib:/lib
  10. $ cp -v ld/ld-new /tools/bin
  11. $ cd ..
  12. $ rm -rf binutils-build binutils-2.17  #6.2以后的版本这里可以删除binutils-build

ncurses-5.6   (5分钟) 

  1. $ tar xvf /lfs-sources/ncurses-5.6.tar.gz
  2. $ cd ncurses-5.6
  3. $ ./configure --prefix=/tools --with-shared \
        --without-debug --without-ada --enable-overwrite
  4. $ make
  5. $ make install
  6. $ cd ..
  7. $ rm -rf ncurses-5.6

bash-3.2      (10分钟)

  1. $ tar xvf /lfs-sources/bash-3.2.tar.gz
  2. $ cd bash-3.2
  3. $ patch -Np1 -i /lfs-sources/bash-3.2-fixes-5.patch
  4. $ ./configure --prefix=/tools --without-bash-malloc
  5. $ make   #这里报错,看下面说明
  6. $ make install
  7. $ ln -vs bash /tools/bin/sh
  8. $ cd ..
  9. $ rm -rf bash-3.2

make时报错:

yacc -d ./parse.y
make: yacc: Command not found
make: *** [y.tab.c] Error 127

因为我不是用liveCD作宿主系统,所以没有yacc,终端里输入yacc,提示有几个可以装,我选择了byacc:

  1. $ sudo apt-get install byacc

然后再重新执行make,顺利完成

bzip2-1.0.4   (5分钟)

  1. $ tar xvf /lfs-sources/bzip2-1.0.4.tar.gz
  2. $ cd bzip2-1.0.4
  3. $ make
  4. $ make PREFIX=/tools install
  5. $ cd ..
  6. $ rm -rf bzip2-1.0.4

coreutils-6.9   (5分钟)

  1. $ tar xvf /lfs-sources/coreutils-6.9.tar.bz2
  2. $ cd coreutils-6.9
  3. $ ./configure --prefix=/tools
  4. $ make
  5. $ make install
  6. $ cp -v src/su /tools/bin/su-tools
  7. $ cd ..
  8. $ rm -rf coreutils-6.9

diffutils-2.8.1   (5分钟)

  1. $ tar xvf /lfs-sources/diffutils-2.8.1.tar.gz
  2. $ cd diffutils-2.8.1
  3. $ ./configure --prefix=/tools
  4. $ make
  5. $ make install
  6. $ cd ..
  7. $ rm -rf diffutils-2.8.1

findutils-4.2.31   (5分钟)

  1. $ tar xvf /lfs-sources/findutils-4.2.31.tar.gz
  2. $ cd findutils-4.2.31
  3. $ ./configure --prefix=/tools
  4. $ make
  5. $ make install
  6. $ cd ..
  7. $ rm -rf findutils-4.2.31

gawk-3.1.5   (5分钟)

  1. $ tar xvf /lfs-sources/gawk-3.1.5.tar.bz2
  2. $ cd gawk-3.1.5
  3. $ ./configure --prefix=/tools
  4. $ cat >> config.h << "EOF"
  5.  #define HAVE_LANGINFO_CODESET 1
  6.  #define HAVE_LC_MESSAGES 1
  7.  EOF
  8. $ make
  9. $ make install
  10. $ cd ..
  11. $ rm -rf gawk-3.1.5

gettext-0.16.1   (15分钟)

  1. $ tar xvf /lfs-sources/gettext-0.16.1.tar.gz
  2. $ cd gettext-0.16.1/gettext-tools
  3. $ ./configure --prefix=/tools --disable-shared
  4. $ make -C gnulib-lib
  5. $ make -C src msgfmt
  6. $ cp -v src/msgfmt /tools/bin
  7. $ cd ../..
  8. $ rm -rf gettext-0.16.1

(未完待续)


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter