Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2116760
  • 博文数量: 438
  • 博客积分: 3871
  • 博客等级: 中校
  • 技术积分: 6075
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-10 00:11
个人简介

邮箱: wangcong02345@163.com

文章分类

全部博文(438)

文章存档

2017年(15)

2016年(119)

2015年(91)

2014年(62)

2013年(56)

2012年(79)

2011年(16)

分类: LINUX

2016-01-25 13:51:41

宿主系统: ubuntu 14.04 64位
并下载 http://ftp.lfs-matrix.net/pub/lfs/lfs-packages/lfs-packages-7.7-systemd.tar 
329M,这个是所有的源代码的打包
一.准备工作
1.
a.建立分区
  1. cong@msi:/work$ sudo mkfs.ext4 /dev/sda5 #将/dev/sda5格式化为ext4
  2. cong@msi:/work$ export LFS=/mnt/lfs #
  3. cong@msi:/work$ sudo mkdir -pv $LFS # 建立挂载点
  4. cong@msi:/work$ sudo mount -v -t ext4 /dev/sda5 $LFS # 将 /dev/<xxx> 挂载到 $LFS
b.建立lfs用户
  1. cong@msi:/work$ sudo groupadd lfs
  2. cong@msi:/work$ sudo useradd -s /bin/bash -g lfs -m -k /dev/null lfs
  3. cong@msi:/work$ sudo passwd lfs
c.建立源码与编译的目录
  1. cong@msi:/work$ mkdir -v $LFS/tools
  2. cong@msi:/work$ mkdir -v $LFS/sources

  3. cong@msi:/work$ sudo ln -sv /mnt/lfs/tools/ /
  4. /tools’ ->/mnt/lfs/tools/
  5. cong@msi:/work$ ls -l /
  6. lrwxrwxrwx 1 root root 15 Jan 25 10:44 tools -> /mnt/lfs/tools/
d. 解压源码到sources目录
  1. cong@msi:/work$ sudo tar czf ./lfs-packages-7.7-systemd.tar -C$LFS/sources
e.此时所有的操作都是在非lfs用户下进行的,一会就要切换到lfs用户了,这时需要把所有的文件owner都改为lfs
  1. cong@msi:/mnt$ sudo chown lfs:lfs ./lfs -R
f.切换到lfs用户
  1. cong@msi:/mnt/lfs$ sudo su - lfs
  2. lfs@msi:~$ pwd #这是进入到了lfs的家目录
  3. /home/lfs
2.设置环境
  1. cat > ~/.bash_profile << "EOF"
  2. exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
  3. EOF

  4. cat > ~/.bashrc << "EOF"
  5. set +h
  6. umask 022
  7. LFS=/mnt/lfs
  8. LC_ALL=POSIX
  9. LFS_TGT=$(uname -m)-lfs-linux-gnu
  10. PATH=/tools/bin:/bin:/usr/bin
  11. export LFS LC_ALL LFS_TGT PATH
  12. EOF
不退出使环境生效
source ~/.bash_profile
退出重新登陆也可以使环境生效
sudo su - lfs 即可

二.源码编译
2.1 第一遍编译binutils-2.25
  1. lfs@msi:/mnt/lfs/sources$ tar xf binutils-2.25.tar.bz2
  2. lfs@msi:/mnt/lfs/sources$ mkdir -v binutils-build
  3. mkdir: created directory './binutils-build'
  4. lfs@msi:/mnt/lfs/sources$ cd binutils-build/
  5. lfs@msi:/mnt/lfs/sources/binutils-build$ ../binutils-2.25/configure --prefix=/tools --with-sysroot=$LFS --with-lib-path=/tools/lib --target=$LFS_TGT --disable-nls --disable-werror
  6. lfs@msi:/mnt/lfs/sources/binutils-build$ make
  7. lfs@msi:/mnt/lfs/sources/binutils-build$ make install
a. ubuntu下编译时如果报WARNING: `makeinfo' is missing on your system.
说明texinfo没有装,安装 cong@msi:/work$ sudo apt-get install texinfo
注意: 这儿make时没有加-j8,是因为make -j8会报错
b.我的机子是64位的需要执行如下
  1. lfs@msi:/mnt/lfs/sources/binutils-build$ mkdir -v /tools/lib
  2. lfs@msi:/mnt/lfs/sources/binutils-build$ ln -sv /tools/lib /tools/lib64
建一个/tools/lib64的符号链接,如果不做这一步下面的2.5第2遍编译binutils时会报错:
cannot run C compiled programs
2.2 第一遍编译gcc-4.9.2
  1. lfs@msi:/mnt/lfs/sources$ tar xf gcc-4.9.2.tar.bz2
  2. lfs@msi:/mnt/lfs/sources$ cd gcc-4.9.2
  3. lfs@msi:/mnt/lfs/sources/gcc-4.9.2$ tar xf ../mpfr-3.1.2.tar.xz
  4. lfs@msi:/mnt/lfs/sources/gcc-4.9.2$ tar xf ../gmp-6.0.0a.tar.xz
  5. lfs@msi:/mnt/lfs/sources/gcc-4.9.2$ tar xf ../mpc-1.0.2.tar.gz
  6. lfs@msi:/mnt/lfs/sources/gcc-4.9.2$ mv mpfr-3.1.2/ mpfr
  7. lfs@msi:/mnt/lfs/sources/gcc-4.9.2$ mv gmp-6.0.0/ gmp
  8. lfs@msi:/mnt/lfs/sources/gcc-4.9.2$ mv mpc-1.0.2/ mpc

  9. lfs@msi:/mnt/lfs/sources/gcc-4.9.2$ for file in \
  10. > $(find gcc/config -name linux64.h -o -name linux.h -o -name sysv4.h)
  11. > do
  12. > cp -uv $file{,.orig}
  13. > sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \
  14. > -e 's@/usr@/tools@g' $file.orig > $file
  15. > echo '
  16. > #undef STANDARD_STARTFILE_PREFIX_1
  17. > #undef STANDARD_STARTFILE_PREFIX_2
  18. > #define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/"
  19. > #define STANDARD_STARTFILE_PREFIX_2 ""' >> $file
  20. > touch $file.orig
  21. > done
  22. lfs@msi:/mnt/lfs/sources/gcc-4.9.2$ sed -i '/k prot/agcc_cv_libc_provides_ssp=yes' gcc/configure
  23. lfs@msi:/mnt/lfs/sources/gcc-4.9.2$ mkdir ../gcc-build
  24. lfs@msi:/mnt/lfs/sources/gcc-4.9.2$ cd ../gcc-build/
  25. lfs@msi:/mnt/lfs/sources/gcc-build$ ../gcc-4.9.2/configure \
  26.     --target=$LFS_TGT \
  27.     --prefix=/tools \
  28.     --with-sysroot=$LFS \
  29.     --with-newlib \
  30.     --without-headers \
  31.     --with-local-prefix=/tools \
  32.     --with-native-system-header-dir=/tools/include \
  33.     --disable-nls \
  34.     --disable-shared \
  35.     --disable-multilib \
  36.     --disable-decimal-float \
  37.     --disable-threads \
  38.     --disable-libatomic \
  39.     --disable-libgomp \
  40.     --disable-libitm \
  41.     --disable-libquadmath \
  42.     --disable-libsanitizer \
  43.     --disable-libssp \
  44.     --disable-libvtv \
  45.     --disable-libcilkrts \
  46.     --disable-libstdc++-v3 \
  47.     --enable-languages=c,c++
  48. lfs@msi:/mnt/lfs/sources/gcc-build$ make -j8 && make install

lfs@msi:/mnt/lfs/sources/gcc-build$ ls /tools
bin  include  lib  libexec  share  x86_64-lfs-linux-gnu

2.3 安装 Linux API 头文件
  1. lfs@msi:/mnt/lfs/sources$ tar xf linux-3.19.tar.xz
  2. lfs@msi:/mnt/lfs/sources$ cd linux-3.19
  3. lfs@msi:/mnt/lfs/sources/linux-3.19$ make mrproper
  4. lfs@msi:/mnt/lfs/sources/linux-3.19$ make INSTALL_HDR_PATH=dest headers_install
  5. lfs@msi:/mnt/lfs/sources/linux-3.19$ cp -rv dest/include/* /tools/include
2.4 安装Glibc
  1. lfs@msi:/mnt/lfs/sources$ tar xf glibc-2.21.tar.xz
  2. lfs@msi:/mnt/lfs/sources$ cd glibc-2.21
  3. lfs@msi:/mnt/lfs/sources/glibc-2.21$ sed -e '/ia32/s/^/1:/' \
  4. > -e '/SSE2/s/^1://' \
  5. > -i sysdeps/i386/i686/multiarch/mempcpy_chk.S
  6. lfs@msi:/mnt/lfs/sources/glibc-2.21$ mkdir -v ../glibc-build
  7. mkdir: created directory '../glibc-build'
  8. lfs@msi:/mnt/lfs/sources/glibc-2.21$ cd ../glibc-build/
  9. lfs@msi:/mnt/lfs/sources/glibc-build$ ../glibc-2.21/configure \
  10. > --prefix=/tools \
  11. > --host=$LFS_TGT \
  12. > --build=$(../glibc-2.21/scripts/config.guess) \
  13. > --disable-profile \
  14. > --enable-kernel=2.6.32 \
  15. > --with-headers=/tools/include \
  16. > libc_cv_forced_unwind=yes \
  17. > libc_cv_ctors_header=yes \
  18. > libc_cv_c_cleanup=yes
  19. lfs@msi:/mnt/lfs/sources/glibc-build$ make -j8 && make install
a. 注意:如果在configure时出现下面的错误,说明gawk没有装
  1. configure: error:
  2. *** These critical programs are missing or too old: gawk
  3. *** Check the INSTALL file for required versions.
lfs@msi:/mnt/lfs/sources/glibc-build$ sudo apt-get install gawk
b.检查一下:
  1. lfs@msi:/mnt/lfs/sources/glibc-build$ echo 'main(){}' > dummy.c
  2. lfs@msi:/mnt/lfs/sources/glibc-build$ $LFS_TGT-gcc dummy.c
  3. lfs@msi:/mnt/lfs/sources/glibc-build$ readelf -l a.out | grep ': /tools'
  4.       [Requesting program interpreter: /tools/lib64/ld-linux-x86-64.so.2]
2.5 第2遍编译binutils-2.25
  1. lfs@msi:/mnt/lfs/sources/gcc-build$ rm -rf ../binutils-build/
  2. lfs@msi:/mnt/lfs/sources/gcc-build$ mkdir ../binutils-build
  3. lfs@msi:/mnt/lfs/sources/gcc-build$ cd ../binutils-build/
  4. lfs@msi:/mnt/lfs/sources/binutils-build$ CC=$LFS_TGT-gcc \
  5. > AR=$LFS_TGT-ar \
  6. > RANLIB=$LFS_TGT-ranlib \
  7. > ../binutils-2.25/configure \
  8. > --prefix=/tools \
  9. > --disable-nls \
  10. > --disable-werror \
  11. > --with-lib-path=/tools/lib \
  12. > --with-sysroot
  13. lfs@msi:/mnt/lfs/sources/binutils-build$ make -j8 && make install
a.注意,如果在confingure时报错cannot run C compiled programs,说明gcc没有安装好
我遇到的原因是,64位机子上没有lib64这个符号链接
2.5.1 编译ld
  1. lfs@msi:/mnt/lfs/sources/binutils-build$ make -C ld clean
  2. lfs@msi:/mnt/lfs/sources/binutils-build$ make -C ld LIB_PATH=/usr/lib:/lib

  3. lfs@msi:/mnt/lfs/sources/binutils-build$ cp -v ld/ld-new /tools/bin/
  4. 'ld/ld-new' -> '/tools/bin/ld-new
2.6 第2遍编译gcc-4.9.2
  1. lfs@msi:/mnt/lfs/sources/gcc-4.9.2$ for file in \
  2. > $(find gcc/config -name linux64.h -o -name linux.h -o -name sysv4.h)
  3. > do
  4. > cp -uv $file{,.orig}
  5. > sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \
  6. > -e 's@/usr@/tools@g' $file.orig > $file
  7. > echo '
  8. > #undef STANDARD_STARTFILE_PREFIX_1
  9. > #undef STANDARD_STARTFILE_PREFIX_2
  10. > #define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/"
  11. > #define STANDARD_STARTFILE_PREFIX_2 ""' >> $file
  12. > touch $file.orig
  13. > done
  14. lfs@msi:/mnt/lfs/sources/gcc-4.9.2$ tar xf ../mpfr-3.1.2.tar.xz
  15. lfs@msi:/mnt/lfs/sources/gcc-4.9.2$ tar xf ../gmp-6.0.0a.tar.xz
  16. lfs@msi:/mnt/lfs/sources/gcc-4.9.2$ tar xf ../mpc-1.0.2.tar.gz
  17. lfs@msi:/mnt/lfs/sources/gcc-4.9.2$ mv mpfr-3.1.2/ mpfr
  18. lfs@msi:/mnt/lfs/sources/gcc-4.9.2$ mv gmp-6.0.0/ gmp
  19. lfs@msi:/mnt/lfs/sources/gcc-4.9.2$ mv mpc-1.0.2/ mpc
  20. lfs@msi:/mnt/lfs/sources/gcc-4.9.2$ cd ../gcc-build/
  21. lfs@msi:/mnt/lfs/sources/gcc-build$ ls
  22. lfs@msi:/mnt/lfs/sources/gcc-build$
  23. lfs@msi:/mnt/lfs/sources/gcc-build$ CC=$LFS_TGT-gcc \
  24. > CXX=$LFS_TGT-g++ \
  25. > AR=$LFS_TGT-ar \
  26. > RANLIB=$LFS_TGT-ranlib \
  27. > ../gcc-4.9.2/configure \
  28. > --prefix=/tools \
  29. > --with-local-prefix=/tools \
  30. > --with-native-system-header-dir=/tools/include \
  31. > --enable-languages=c,c++ \
  32. > --disable-libstdcxx-pch \
  33. > --disable-multilib \
  34. > --disable-bootstrap \
  35. > --disable-libgomp
  36. lfs@msi:/mnt/lfs/sources/gcc-build$ make -j8 && make install
a. 这儿没有cc,需要建立一个符号链接
lfs@msi:/mnt/lfs/sources/gcc-build$ ln -sv /tools/bin/gcc /tools/bin/cc
'/tools/bin/cc' -> '/tools/bin/gcc'
b. 测试一下工具链
  1. lfs@msi:/mnt/lfs/sources/gcc-build$ echo 'main(){}' > dummy.c
  2. lfs@msi:/mnt/lfs/sources/gcc-build$ cc dummy.c
  3. lfs@msi:/mnt/lfs/sources/gcc-build$ readelf -l a.out | grep ': /tools'
  4.       [Requesting program interpreter: /tools/lib64/ld-linux-x86-64.so.2]
2.7 测试套件TCL
  1. lfs@msi:/mnt/lfs/sources$ tar xf tcl8.6.3-src.tar.gz
  2. lfs@msi:/mnt/lfs/sources$ cd tcl8.6.3/unix/
  3. lfs@msi:/mnt/lfs/sources/tcl8.6.3/unix$ ./configure --prefix=/tools

  4. lfs@msi:/mnt/lfs/sources/tcl8.6.3/unix$ make -j8 && make install
a.让库文件libtcl8.6.so可写
  1. lfs@msi:/mnt/lfs/sources/tcl8.6.3/unix$ ls -l /tools/lib/libtcl8.6.so
  2. -r-xr-xr-x 1 lfs lfs 1987632 Jan 26 11:47 /tools/lib/libtcl8.6.so

  3. lfs@msi:/mnt/lfs/sources/tcl8.6.3/unix$ chmod -v u+w /tools/lib/libtcl8.6.so
  4. mode of '/tools/lib/libtcl8.6.so' changed from 0555 (r-xr-xr-x) to 0755 (rwxr-xr-x)

  5. lfs@msi:/mnt/lfs/sources/tcl8.6.3/unix$ ls -l /tools/lib/libtcl8.6.so
  6. -rwxr-xr-x 1 lfs lfs 1987632 Jan 26 11:47 /tools/lib/libtcl8.6.so
b.安装头文件及创建符号连接
  1. lfs@msi:/mnt/lfs/sources/tcl8.6.3/unix$ make install-private-headers
  2. Installing private header files to /tools/include/
  3. lfs@msi:/mnt/lfs/sources/tcl8.6.3/unix$ ln -sv /tools/bin/tclsh8.6 /tools/bin/tclsh
  4. '/tools/bin/tclsh' -> '/tools/bin/tclsh8.6
2.8 expect
  1. lfs@msi:/mnt/lfs/sources/tcl8.6.3/unix$ cd ../..
  2. lfs@msi:/mnt/lfs/sources$
  3. lfs@msi:/mnt/lfs/sources$ tar xf expect5.45.tar.gz
  4. lfs@msi:/mnt/lfs/sources$ cd expect5.45
  5. lfs@msi:/mnt/lfs/sources/expect5.45$ cp -v configure{,.orig}
  6. 'configure' -> 'configure.orig'
  7. lfs@msi:/mnt/lfs/sources/expect5.45$ sed 's:/usr/local/bin:/bin:' configure.orig > configure
  8. lfs@msi:/mnt/lfs/sources/expect5.45$ diff configure.orig configure
  9. 13411,13412c13411,13412
  10. < if test -r /usr/local/bin/stty ; then
  11. < STTY_BIN=/usr/local/bin/stty
  12. ---
  13. > if test -r /bin/stty ; then
  14. > STTY_BIN=/bin/stty
  15. lfs@msi:/mnt/lfs/sources/expect5.45$ ./configure --prefix=/tools \
  16. > --with-tcl=/tools/lib \
  17. > --with-tclinclude=/tools/include

  18. lfs@msi:/mnt/lfs/sources/expect5.45$ make -j8 && make SCRIPTS="" install
2.9 dejagnu
  1. lfs@msi:/mnt/lfs/sources/expect5.45$ tar xf ../dejagnu-1.5.2.tar.gz -C../
  2. lfs@msi:/mnt/lfs/sources/expect5.45$ cd ../dejagnu-1.5.2
  3. lfs@msi:/mnt/lfs/sources/dejagnu-1.5.2$ ./configure --prefix=/tools

  4. lfs@msi:/mnt/lfs/sources/dejagnu-1.5.2$ make -j8 && make install

2.10 check
  1. lfs@msi:/mnt/lfs/sources/dejagnu-1.5.2$ tar xf ../check-0.9.14.tar.gz -C../
  2. lfs@msi:/mnt/lfs/sources/dejagnu-1.5.2$ cd ../check-0.9.14
  3. lfs@msi:/mnt/lfs/sources/check-0.9.14$ PKG_CONFIG= ./configure --prefix=/tools
  4. lfs@msi:/mnt/lfs/sources/check-0.9.14$ make -j8 && make install

2.11 ncurses
  1. lfs@msi:/mnt/lfs/sources/check-0.9.14$ tar xf ../ncurses-5.9.tar.gz -C..
  2. lfs@msi:/mnt/lfs/sources/check-0.9.14$ cd ../ncurses-5.9
  3. lfs@msi:/mnt/lfs/sources/ncurses-5.9$ ./configure --prefix=/tools \
  4. > --with-shared \
  5. > --without-debug \
  6. > --without-ada \
  7. > --enable-widec \
  8. > --enable-overwrite
  9. lfs@msi:/mnt/lfs/sources/ncurses-5.9$ make -j8 && make install

2.12 bash
  1. lfs@msi:/mnt/lfs/sources/ncurses-5.9$ tar xf ../bash-4.3.30.tar.gz -C..
  2. lfs@msi:/mnt/lfs/sources/ncurses-5.9$ cd ../bash-4.3.30
  3. lfs@msi:/mnt/lfs/sources/bash-4.3.30$ ./configure --prefix=/tools --without-bash-malloc
  4. lfs@msi:/mnt/lfs/sources/bash-4.3.30$ make -j8 && make install^C
  5. lfs@msi:/mnt/lfs/sources/bash-4.3.30$ ln -sv /tools/bin/bash /tools/bin/sh
  6. '/tools/bin/sh' -> '/tools/bin/bash


2.13 bzip2
  1. lfs@msi:/mnt/lfs/sources/bash-4.3.30$ tar xf ../bzip2-1.0.6.tar.gz -C..
  2. lfs@msi:/mnt/lfs/sources/bash-4.3.30$ cd ../bzip2-1.0.6
  3. lfs@msi:/mnt/lfs/sources/bzip2-1.0.6$ ls
  4. lfs@msi:/mnt/lfs/sources/bzip2-1.0.6$ make -j8
  5. lfs@msi:/mnt/lfs/sources/bzip2-1.0.6$ make PREFIX=/tools install
2.14 coreutils
  1. lfs@msi:/mnt/lfs/sources/bzip2-1.0.6$ tar xf ../coreutils-8.23.tar.xz -C ../
  2. lfs@msi:/mnt/lfs/sources/bzip2-1.0.6$ cd ../coreutils-8.23
  3. lfs@msi:/mnt/lfs/sources/coreutils-8.23$ ./configure --prefix=/tools --enable-install-program=hostnam
  4. lfs@msi:/mnt/lfs/sources/coreutils-8.23$ make -j8 && make install
2.15 diffutils
  1. lfs@msi:/mnt/lfs/sources/coreutils-8.23$ tar xf ../diffutils-3.3.tar.xz -C ..
  2. lfs@msi:/mnt/lfs/sources/coreutils-8.23$ cd ../diffutils-3.3
  3. lfs@msi:/mnt/lfs/sources/diffutils-3.3$ ./configure --prefix=/tools/
  4. lfs@msi:/mnt/lfs/sources/diffutils-3.3$ make -j8 && make install
2.16 file
  1. lfs@msi:/mnt/lfs/sources/diffutils-3.3$ tar xf ../file-5.22.tar.gz -C ..
  2. lfs@msi:/mnt/lfs/sources/diffutils-3.3$ cd ../file-5.22
  3. lfs@msi:/mnt/lfs/sources/file-5.22$
  4. lfs@msi:/mnt/lfs/sources/file-5.22$ ./configure --prefix=/tools
  5. lfs@msi:/mnt/lfs/sources/file-5.22$ make -j8 && make install
2.17 findutils
  1. lfs@msi:/mnt/lfs/sources/file-5.22$ tar xf ../findutils-4.4.2.tar.gz -C ..
  2. lfs@msi:/mnt/lfs/sources/file-5.22$ cd ../findutils-4.4.2
  3. lfs@msi:/mnt/lfs/sources/findutils-4.4.2$ ./configure --prefix=/tools/
  4. lfs@msi:/mnt/lfs/sources/findutils-4.4.2$
  5. lfs@msi:/mnt/lfs/sources/findutils-4.4.2$ make -j8 && make install
2.18 gawk
  1. lfs@msi:/mnt/lfs/sources/findutils-4.4.2$ tar xf ../gawk-4.1.1.tar.xz -C ..
  2. lfs@msi:/mnt/lfs/sources/findutils-4.4.2$ cd ../gawk-4.1.1
  3. lfs@msi:/mnt/lfs/sources/gawk-4.1.1$ ./configure --prefix=/tools
  4. lfs@msi:/mnt/lfs/sources/gawk-4.1.1$ make -j8 && make install
2.19  gettext
  1. lfs@msi:/mnt/lfs/sources/gawk-4.1.1$ tar xf ../gettext-0.19.4.tar.xz -C ..
  2. lfs@msi:/mnt/lfs/sources/gawk-4.1.1$ cd ../gettext-0.19.4/gettext-tools/
  3. lfs@msi:/mnt/lfs/sources/gettext-0.19.4/gettext-tools$
  4. lfs@msi:/mnt/lfs/sources/gettext-0.19.4/gettext-tools$ EMACS="no" ./configure --prefix=/tools --disable-shared
  5. lfs@msi:/mnt/lfs/sources/gettext-0.19.4/gettext-tools$ make -C gnulib-lib/
  6. lfs@msi:/mnt/lfs/sources/gettext-0.19.4/gettext-tools$ make -C intl pluralx.c
  7. lfs@msi:/mnt/lfs/sources/gettext-0.19.4/gettext-tools$ make -C src msgfmt
  8. lfs@msi:/mnt/lfs/sources/gettext-0.19.4/gettext-tools$ make -C src msgmerge
  9. lfs@msi:/mnt/lfs/sources/gettext-0.19.4/gettext-tools$ make -C src xgettext
  10. lfs@msi:/mnt/lfs/sources/gettext-0.19.4/gettext-tools$ cp -v src/{msgfmt,msgmerge,xgettext} /tools/bin/
  11. 'src/msgfmt' -> '/tools/bin/msgfmt'
  12. 'src/msgmerge' -> '/tools/bin/msgmerge'
  13. 'src/xgettext' -> '/tools/bin/xgettext
2.20 grep
  1. lfs@msi:/mnt/lfs/sources/gettext-0.19.4/gettext-tools$ tar xf ../../grep-2.21.tar.xz -C ../..
  2. lfs@msi:/mnt/lfs/sources/gettext-0.19.4/gettext-tools$ cd ../../grep-2.21
  3. lfs@msi:/mnt/lfs/sources/grep-2.21$ ./configure --prefix=/tools
  4. lfs@msi:/mnt/lfs/sources/grep-2.21$ make -j8 && make install
2.21 gzip
  1. lfs@msi:/mnt/lfs/sources/grep-2.21$ tar xf ../gzip-1.6.tar.xz -C ..
  2. lfs@msi:/mnt/lfs/sources/grep-2.21$ cd ../gzip-1.6
  3. lfs@msi:/mnt/lfs/sources/gzip-1.6$ ./configure --prefix=/tools
  4. lfs@msi:/mnt/lfs/sources/gzip-1.6$ make -j8 && make install
2.22 m4
  1. lfs@msi:/mnt/lfs/sources/gzip-1.6$ tar xf ../m4-1.4.17.tar.xz -C ..
  2. lfs@msi:/mnt/lfs/sources/gzip-1.6$ cd ../m4-1.4.17
  3. lfs@msi:/mnt/lfs/sources/m4-1.4.17$ ./configure --prefix=/tools
  4. lfs@msi:/mnt/lfs/sources/m4-1.4.17$ make -j8 && make install
2.23 make
  1. lfs@msi:/mnt/lfs/sources/m4-1.4.17$ tar xf ../make-4.1.tar.bz2 -C ../
  2. lfs@msi:/mnt/lfs/sources/m4-1.4.17$ cd ../make-4.1
  3. lfs@msi:/mnt/lfs/sources/make-4.1$ ./configure --prefix=/tools --without-guile
  4. lfs@msi:/mnt/lfs/sources/make-4.1$ make -j8 && make install
2.24 patch
  1. lfs@msi:/mnt/lfs/sources/make-4.1$ tar xf ../patch-2.7.4.tar.xz -C ../
  2. lfs@msi:/mnt/lfs/sources/make-4.1$ cd ../patch-2.7.4
  3. lfs@msi:/mnt/lfs/sources/patch-2.7.4$ ./configure --prefix=/tools/
  4. lfs@msi:/mnt/lfs/sources/patch-2.7.4$ make -j8 && make install
2.25 perl
  1. lfs@msi:/mnt/lfs/sources/patch-2.7.4$ tar xf ../perl-5.20.2.tar.bz2 -C ../
  2. lfs@msi:/mnt/lfs/sources/patch-2.7.4$ cd ../perl-5.20.2
  3. lfs@msi:/mnt/lfs/sources/perl-5.20.2$ sh Configure -des -Dprefix=/tools -Dlibs=-lm
  4. lfs@msi:/mnt/lfs/sources/perl-5.20.2$ make -j8
  5. lfs@msi:/mnt/lfs/sources/perl-5.20.2$ cp -v perl cpan/podlators/pod2man /tools/bin
  6. 'perl' -> '/tools/bin/perl'
  7. 'cpan/podlators/pod2man' -> '/tools/bin/pod2man'
  8. lfs@msi:/mnt/lfs/sources/perl-5.20.2$ mkdir -pv /tools/lib/perl5/5.20.2
  9. mkdir: created directory '/tools/lib/perl5'
  10. mkdir: created directory '/tools/lib/perl5/5.20.2'
  11. lfs@msi:/mnt/lfs/sources/perl-5.20.2$ cp -Rv lib/* /tools/lib/perl5/5.20.2
  12. 'lib/AnyDBM_File.pm' -> '/tools/lib/perl5/5.20.2/AnyDBM_File.pm
2.26 sed
  1. lfs@msi:/mnt/lfs/sources/perl-5.20.2$ tar xf ../sed-4.2.2.tar.bz2 -C ..
  2. lfs@msi:/mnt/lfs/sources/perl-5.20.2$ cd ../sed-4.2.2
  3. lfs@msi:/mnt/lfs/sources/sed-4.2.2$ ./configure --prefix=/tools && make -j8 && make install
2.27 tar
  1. lfs@msi:/mnt/lfs/sources/sed-4.2.2$ tar xf ../tar-1.28.tar.xz -C ..
  2. lfs@msi:/mnt/lfs/sources/sed-4.2.2$ cd ../tar-1.28
  3. lfs@msi:/mnt/lfs/sources/tar-1.28$ ./configure --prefix=/tools && make -j8 && make install
2.28 texinfo
  1. lfs@msi:/mnt/lfs/sources/tar-1.28$ tar xf ../texinfo-5.2.tar.xz -C ../
  2. lfs@msi:/mnt/lfs/sources/tar-1.28$ cd ../texinfo-5.2
  3. lfs@msi:/mnt/lfs/sources/texinfo-5.2$ ./configure --prefix=/tools && make -j8 && make install
2.29 util-linux
  1. lfs@msi:/mnt/lfs/sources/texinfo-5.2$ tar xf ../util-linux-2.26.tar.xz -C ..
  2. lfs@msi:/mnt/lfs/sources/texinfo-5.2$ cd ../util-linux-2.26
  3. lfs@msi:/mnt/lfs/sources/util-linux-2.26$ ./configure --prefix=/tools \
  4. > --without-python \
  5. > --disable-makeinstall-chown \
  6. > --without-systemdsystemunitdir \
  7. > PKG_CONFIG=""
  8. lfs@msi:/mnt/lfs/sources/util-linux-2.26$ make -j8 && make install
2.30 xz
  1. lfs@msi:/mnt/lfs/sources/util-linux-2.26$ tar xf ../xz-5.2.0.tar.xz -C ..
  2. lfs@msi:/mnt/lfs/sources/util-linux-2.26$ cd ../xz-5.2.0
  3. lfs@msi:/mnt/lfs/sources/xz-5.2.0$ ./configure --prefix=/tools && make -j8 && make install
2.31 清理
  1. lfs@msi:/mnt/lfs/sources/xz-5.2.0$ cd /tools
  2. lfs@msi:/tools$ du -hs     -->清理之前1.2G
  3. 1.2G .
  4. lfs@msi:/tools$ strip --strip-debug /tools/lib/*
  5. lfs@msi:/tools$ du -hs
  6. 1.1G .
  7. lfs@msi:/tools$ /usr/bin/strip --strip-unneeded /tools/{,s}bin
  8. lfs@msi:/tools$ du -hs     -->清理之后859M
  9. 859M .
删除多余的文档,这儿就不删了
但需要备份一下现在的tools目录
cong@msi:/mnt/lfs/tools$ sudo tar czf /work/lfs/tools_1412.tar.gz ./*
三.
3.1 配置chroot的环境
  1. lfs@msi:/tools$ exit              -->退出lfs用户
  2. cong@msi:~$ sudo su -             -->切换到root
  3. root@msi:/mnt/lfs# echo $LFS      -->重新export一个LFS变量

  4. root@msi:/mnt/lfs# export LFS=/mnt/lfs
  5. root@msi:/mnt/lfs# chown -R root:root $LFS/tools/
  6. root@msi:/mnt/lfs# mkdir -pv $LFS/{dev,proc,sys,run}
  7. root@msi:/mnt/lfs# mknod -m 600 $LFS/dev/console c 5 1
  8. root@msi:/mnt/lfs# mknod -m 666 $LFS/dev/null c 1 3

  9. root@msi:/mnt/lfs# mount -v --bind /dev/ $LFS/dev/
  10. /dev on /mnt/lfs/dev type none (rw,bind)
  11. root@msi:/mnt/lfs# mount -vt devpts devpts $LFS/dev/pts -o gid=5,mode=620
  12. devpts on /mnt/lfs/dev/pts type devpts (rw,gid=5,mode=620)
  13. root@msi:/mnt/lfs# mount -vt proc proc $LFS/proc
  14. proc on /mnt/lfs/proc type proc (rw)
  15. root@msi:/mnt/lfs# mount -vt sysfs sysfs $LFS/sys
  16. sysfs on /mnt/lfs/sys type sysfs (rw)
  17. root@msi:/mnt/lfs# mount -vt tmpfs tmpfs $LFS/run
  18. tmpfs on /mnt/lfs/run type tmpfs (rw)

  19. root@msi:/mnt/lfs# ls /mnt/lfs/dev/shm -l
  20. lrwxrwxrwx 1 root root 8 1月 25 10:05 /mnt/lfs/dev/shm -> /run/shm
  21. root@msi:/mnt/lfs# mkdir -pv $LFS/$(readlink $LFS/dev/shm)
  22. mkdir: created directory ‘/mnt/lfs/run/shm’
3.2 chroot
  1. root@msi:/mnt/lfs# chroot "$LFS" /tools/bin/env -i \
  2. > HOME=/root \
  3. > TERM="$TERM" \
  4. > PS1='\u:\w\$ ' \
  5. > PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
  6. > /tools/bin/bash --login +h

  7. I have no name!:/# mkdir -pv /{bin,boot,etc/{opt,sysconfig},home,lib/firmware,mnt,opt}
  8. I have no name!:/# mkdir -pv /{media/{floppy,cdrom},sbin,srv,var}

  9. I have no name!:/# install -dv -m 0750 /root
  10. install: creating directory '/root'

  11. I have no name!:/# install -dv -m 1777 /tmp /var/tmp
  12. install: creating directory '/tmp'
  13. install: creating directory '/var/tmp'


  14. I have no name!:/# mkdir -pv /usr/{,local/}{bin,include,lib,sbin,src}
  15. I have no name!:/# mkdir -pv /usr/{,local/}share/{color,dict,doc,info,locale,man}
  16. I have no name!:/# mkdir -v /usr/{,local/}share/{misc,terminfo,zoneinfo}
  17. I have no name!:/# mkdir -v /usr/libexec
  18. I have no name!:/# mkdir -pv /usr/{,local/}share/man/man{1..8}
  19. I have no name!:/# ln -sv lib/ /lib64
  20. '/lib64' -> 'lib/'
  21. I have no name!:/# ln -sv lib /usr/lib64
  22. '/usr/lib64' -> 'lib'
  23. I have no name!:/# ln -sv lib /usr/local/lib64
  24. '/usr/local/lib64' -> 'lib'
  25. I have no name!:/# mkdir -v /var/{log,mail,spool}
  26. I have no name!:/# ln -sv /run /var/run
  27. I have no name!:/# ln -sv /run/lock /var/lock
  28. I have no name!:/# mkdir -pv /var/{opt,cache,lib/{color,misc,locate},local}

  29. I have no name!:/# ln -sv /tools/bin/{bash,cat,echo,pwd,stty} /bin
  30. I have no name!:/# -sv /tools/bin/perl /usr/bin
  31. I have no name!:/# ln -sv /tools/lib/libgcc_s.so{,.1} /usr/lib
  32. I have no name!:/# ln -sv /tools/lib/libstdc++.so{,.6} /usr/lib
  33. I have no name!:/# sed 's/tools/usr/' /tools/lib/libstdc++.la > /usr/lib/libstdc++.la
  34. I have no name!:/# ln -sv bash /bin/sh
  35. I have no name!:/# ln -sv /proc/self/mounts /etc/mtab
a.创建/etc/passwd文件
  1. I have no name!:/# cat > /etc/passwd << "EOF"
  2. > root:x:0:0:root:/root:/bin/bash
  3. > bin:x:1:1:bin:/dev/null:/bin/false
  4. > daemon:x:6:6:Daemon User:/dev/null:/bin/false
  5. > messagebus:x:18:18:D-Bus Message Daemon User:/var/run/dbus:/bin/false
  6. > systemd-bus-proxy:x:72:72:systemd Bus Proxy:/:/bin/false
  7. > systemd-journal-gateway:x:73:73:systemd Journal Gateway:/:/bin/false
  8. > systemd-journal-remote:x:74:74:systemd Journal Remote:/:/bin/false
  9. > systemd-journal-upload:x:75:75:systemd Journal Upload:/:/bin/false
  10. > systemd-network:x:76:76:systemd Network Management:/:/bin/false
  11. > systemd-resolve:x:77:77:systemd Resolver:/:/bin/false
  12. > systemd-timesync:x:78:78:systemd Time Synchronization:/:/bin/false
  13. > nobody:x:99:99:Unprivileged User:/dev/null:/bin/false
  14. > EOF
b.创建/etc/group文件
  1. I have no name!:/# cat > /etc/group << "EOF"
  2. > root:x:0:
  3. > bin:x:1:daemon
  4. > sys:x:2:
  5. > kmem:x:3:
  6. > tape:x:4:
  7. > tty:x:5:
  8. > daemon:x:6:
  9. > floppy:x:7:
  10. > disk:x:8:
  11. > lp:x:9:
  12. > dialout:x:10:
  13. > audio:x:11:
  14. > video:x:12:
  15. > utmp:x:13:
  16. > usb:x:14:
  17. > cdrom:x:15:
  18. > adm:x:16:
  19. > messagebus:x:18:
  20. > systemd-journal:x:23:
  21. > input:x:24:
  22. > mail:x:34:
  23. > systemd-bus-proxy:x:72:
  24. > systemd-journal-gateway:x:73:
  25. > systemd-journal-remote:x:74:
  26. > systemd-journal-upload:x:75:
  27. > systemd-network:x:76:
  28. > systemd-resolve:x:77:
  29. > systemd-timesync:x:78:
  30. > nogroup:x:99:
  31. > users:x:999:
  32. > EOF
c.重新登陆之后
  1. I have no name!:/# exec /tools/bin/bash --login +h
  2. root:/#
  3. root:/# touch /var/log/{btmp,lastlog,wtmp}
  4. root:/# chgrp -v utmp /var/log/lastlog
  5. changed group of '/var/log/lastlog' from root to utmp
  6. root:/# chmod -v 664 /var/log/lastlog
  7. mode of '/var/log/lastlog' changed from 0644 (rw-r--r--) to 0664 (rw-rw-r--)
  8. root:/# chmod -v 600 /var/log/btmp
  9. mode of '/var/log/btmp' changed from 0644 (rw-r--r--) to 0600 (rw-------)
3.3 linux-3.19 API头文件
  1. root:/# cd sources/linux-3.19
  2. root:/sources/linux-3.19# make mrproper
  3. root:/sources/linux-3.19# make INSTALL_HDR_PATH=dest headers_install
  4. root:/sources/linux-3.19# find dest/include \( -name .install -o -name ..install.cmd \) -delete
  5. root:/sources/linux-3.19# cp -rv dest/include/* /usr/include
3.4 man-pages
  1. root:/sources/linux-3.19# tar xf ../man-pages-3.79.tar.xz -C..
  2. root:/sources/linux-3.19# cd ../man-pages-3.79
  3. root:/sources/man-pages-3.79# make install

注意:在下面的编译之前需要先把以前解压的目录删掉,以免对现在造成影响
sudo find -maxdepth 1 -type d  -exec rm -rf {} \;

3.5 glibc
  1. root:/sources/man-pages-3.79# rm -rf ../glibc-2.21 ../glibc-build/
  2. root:/sources/man-pages-3.79# tar xf ../glibc-2.21.tar.xz -C ..
  3. root:/sources/man-pages-3.79# cd ../glibc-2.21
  4. root:/sources/glibc-2.21# patch -Np1 -i ../glibc-2.21-fhs-1.patch
  5. root:/sources/glibc-2.21# sed -e '/ia32/s/^/1:/' \
  6. > -e '/SSE2/s/^1://' \
  7. > -i sysdeps/i386/i686/multiarch/mempcpy_chk.S
  8. root:/sources/glibc-2.21# mkdir -v ../glibc-build/
  9. root:/sources/glibc-2.21# cd ../glibc-build/
  10. root:/sources/glibc-build# ../glibc-2.21/configure \
  11. > --prefix=/usr \
  12. > --disable-profile \
  13. > --enable-kernel=2.6.32 \
  14. > --enable-obsolete-rpc
  15. root:/sources/glibc-build# make -j8
  16. root:/sources/glibc-build# make check
  17. root:/sources/glibc-build# make install
a.安装nscd
  1. root:/sources/glibc-build# cp -v ../glibc-2.21/nscd/nscd.conf /etc/
  2. root:/sources/glibc-build# mkdir -pv /var/cache/nscd

  3. root:/sources/glibc-build# install -v -Dm644 ../glibc-2.21/nscd/nscd.tmpfiles /usr/lib/tmpfiles.d/nscd.conf
  4. install: creating directory '/usr/lib/tmpfiles.d'
  5. '../glibc-2.21/nscd/nscd.tmpfiles' -> '/usr/lib/tmpfiles.d/nscd.conf'

  6. root:/sources/glibc-build# install -v -Dm644 ../glibc-2.21/nscd/nscd.service /lib/systemd/system/nscd.service
  7. install: creating directory '/lib/systemd'
  8. install: creating directory '/lib/systemd/system'
  9. '../glibc-2.21/nscd/nscd.service' -> '/lib/systemd/system/nscd.service
b.安装语言环境:
  1. root:/sources/glibc-build# mkdir -pv /usr/lib/locale
  2. mkdir: created directory '/usr/lib/locale'
  3. root:/sources/glibc-build# localedef -i cs_CZ -f UTF-8 cs_CZ.UTF-8
  4. root:/sources/glibc-build# localedef -i de_DE -f ISO-8859-1 de_DE
  5. root:/sources/glibc-build# localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
  6. root:/sources/glibc-build# localedef -i de_DE -f UTF-8 de_DE.UTF-8
  7. root:/sources/glibc-build# localedef -i en_GB -f UTF-8 en_GB.UTF-8
  8. root:/sources/glibc-build# localedef -i en_HK -f ISO-8859-1 en_HK
  9. root:/sources/glibc-build# localedef -i en_PH -f ISO-8859-1 en_PH
  10. root:/sources/glibc-build# localedef -i en_US -f ISO-8859-1 en_US
  11. root:/sources/glibc-build# localedef -i en_US -f UTF-8 en_US.UTF-8
  12. root:/sources/glibc-build# localedef -i es_MX -f ISO-8859-1 es_MX
  13. root:/sources/glibc-build# localedef -i fa_IR -f UTF-8 fa_IR
  14. root:/sources/glibc-build# localedef -i fr_FR -f ISO-8859-1 fr_FR
  15. root:/sources/glibc-build# localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
  16. root:/sources/glibc-build# localedef -i fr_FR -f UTF-8 fr_FR.UTF-8
  17. root:/sources/glibc-build# localedef -i it_IT -f ISO-8859-1 it_IT
  18. root:/sources/glibc-build# localedef -i it_IT -f UTF-8 it_IT.UTF-8
  19. root:/sources/glibc-build# localedef -i ja_JP -f EUC-JP ja_JP
  20. root:/sources/glibc-build# localedef -i ru_RU -f KOI8-R ru_RU.KOI8-R
  21. root:/sources/glibc-build# localedef -i ru_RU -f UTF-8 ru_RU.UTF-8
  22. root:/sources/glibc-build# localedef -i tr_TR -f UTF-8 tr_TR.UTF-8
  23. root:/sources/glibc-build# localedef -i zh_CN -f GB18030 zh_CN.GB18030
  24. root:/sources/glibc-build# cat /etc/nscd.conf ^C
  25. root:/sources/glibc-build# cat > /etc/nsswitch.conf << "EOF"
  26. > # Begin /etc/nsswitch.conf
  27. >
  28. > passwd: files
  29. > group: files
  30. > shadow: files
  31. >
  32. > hosts: files dns myhostname
  33. > networks: files
  34. >
  35. > protocols: files
  36. > services: files
  37. > ethers: files
  38. > rpc: files
  39. >
  40. > # End /etc/nsswitch.conf
  41. > EOF


  42. root:/sources/glibc-build# tar xf ../tzdata2015a.tar.gz
  43. root:/sources/glibc-build# ZONEINFO=/usr/share/zoneinfo
  44. root:/sources/glibc-build# mkdir -pv $ZONEINFO/{posix,right}
  45. mkdir: created directory '/usr/share/zoneinfo/posix'
  46. mkdir: created directory '/usr/share/zoneinfo/right'
  47. root:/sources/glibc-build# for tz in etcetera southamerica northamerica europe africa antarctica \
  48. > asia australasia backward pacificnew systemv; do
  49. > zic -L /dev/null -d $ZONEINFO -y "sh yearistype.sh" ${tz}
  50. > zic -L /dev/null -d $ZONEINFO/posix -y "sh yearistype.sh" ${tz}
  51. > zic -L leapseconds -d $ZONEINFO/right -y "sh yearistype.sh" ${tz}
  52. > done
  53. root:/sources/glibc-build# cp -v zone.tab zone1970.tab iso3166.tab $ZONEINFO
  54. 'zone.tab' -> '/usr/share/zoneinfo/zone.tab'
  55. 'zone1970.tab' -> '/usr/share/zoneinfo/zone1970.tab'
  56. 'iso3166.tab' -> '/usr/share/zoneinfo/iso3166.tab'
  57. root:/sources/glibc-build# zic -d $ZONEINFO -p America/New_York
  58. root:/sources/glibc-build# unset ZONEINFO
  59. root:/sources/glibc-build# tzselect


  60. root:/sources/glibc-build# ln -sfv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  61. '/etc/localtime' -> '/usr/share/zoneinfo/Asia/Shanghai
c.配置动态加载器
  1. root:/sources/glibc-build# cat > /etc/ld.so.conf << "EOF"
  2. > # Begin /etc/ld.so.conf
  3. > /usr/local/lib
  4. > /opt/lib
  5. >
  6. > EOF
  7. root:/sources/glibc-build#
  8. root:/sources/glibc-build#
  9. root:/sources/glibc-build#
  10. root:/sources/glibc-build#
  11. root:/sources/glibc-build# cat >> /etc/ld.so.conf << "EOF"
  12. > # Add an include directory
  13. > include /etc/ld.so.conf.d/*.conf
  14. >
  15. > EOF
  16. root:/sources/glibc-build# cat /etc/ld.so.conf
  17. # Begin /etc/ld.so.conf
  18. /usr/local/lib
  19. /opt/lib

  20. # Add an include directory
  21. include /etc/ld.so.conf.d/*.conf

  22. root:/sources/glibc-build# mkdir -pv /etc/ld.so.conf.d
  23. mkdir: created directory '/etc/ld.so.conf.d
3.6 调整工具链
  1. root:/sources/glibc-build# mv -v /tools/bin/{ld,ld-old}
  2. '/tools/bin/ld' -> '/tools/bin/ld-old'

  3. root:/sources/glibc-build# mv -v /tools/$(gcc -dumpmachine)/bin/{ld,ld-old}
  4. '/tools/x86_64-unknown-linux-gnu/bin/ld' -> '/tools/x86_64-unknown-linux-gnu/bin/ld-old'

  5. root:/sources/glibc-build# mv -v /tools/bin/{ld-new,ld}
  6. '/tools/bin/ld-new' -> '/tools/bin/ld'

  7. root:/sources/glibc-build# ln -sv /tools/bin/ld /tools/$(gcc -dumpmachine)/bin/ld
  8. '/tools/x86_64-unknown-linux-gnu/bin/ld' -> '/tools/bin/ld'

  9. root:/sources/glibc-build# gcc -dumpspecs | sed -e 's@/tools@@g' \
  10.     -e '/\*startfile_prefix_spec:/{n;s@.*@/usr/lib/ @}' \
  11.     -e '/\*cpp:/{n;s@$@ -isystem /usr/include@}' > \
  12.     `dirname $(gcc --print-libgcc-file-name)`/specs   -->创建spec文件
b.测试工具链
  1. root:/sources/glibc-build# echo 'main(){}' > dummy.c
  2. root:/sources/glibc-build# cc dummy.c -v -Wl,--verbose &> dummy.log
  3. root:/sources/glibc-build# readelf -l a.out | grep ': /lib'
  4.       [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
  5. root:/sources/glibc-build# grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log
  6. /usr/lib/../lib64/crt1.o succeeded
  7. /usr/lib/../lib64/crti.o succeeded
  8. /usr/lib/../lib64/crtn.o succeeded
  9. root:/sources/glibc-build# grep -B1 '^ /usr/include' dummy.log
  10. #include <...> search starts here:
  11.  /usr/include
  12. root:/sources/glibc-build# grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'
  13. SEARCH_DIR("=/tools/x86_64-unknown-linux-gnu/lib64")
  14. SEARCH_DIR("/usr/lib")
  15. SEARCH_DIR("/lib")
  16. SEARCH_DIR("=/tools/x86_64-unknown-linux-gnu/lib");
  17. root:/sources/glibc-build# grep "/lib.*/libc.so.6 " dummy.log
  18. attempt to open /lib64/libc.so.6 succeeded
  19. root:/sources/glibc-build# grep found dummy.log
  20. found ld-linux-x86-64.so.2 at /lib64/ld-linux-x86-64.so.2
  21. root:/sources/glibc-build# rm -v dummy.c a.out dummy.log
  22. removed 'dummy.c'
  23. removed 'a.out'
  24. removed 'dummy.log
我这儿是64位的,输出与文档是不一样的
3.7 zlib
  1. root:/sources/zlib-1.2.8# ./configure --prefix=/usr
  2. root:/sources/zlib-1.2.8# make -j8
  3. root:/sources/zlib-1.2.8# make check
  4. root:/sources/zlib-1.2.8# make install
  5. root:/sources/zlib-1.2.8# mv -v /usr/lib/libz.so.* /lib
  6. '/usr/lib/libz.so.1' -> '/lib/libz.so.1'
  7. '/usr/lib/libz.so.1.2.8' -> '/lib/libz.so.1.2.8'
  8. root:/sources/zlib-1.2.8#
  9. root:/sources/zlib-1.2.8# ln -sfv ../../lib/$(readlink /usr/lib/libz.so) /usr/lib/libz.so
  10. '/usr/lib/libz.so' -> '../../lib/libz.so.1.2.8
3.8 file-5.22
  1. root:/sources/zlib-1.2.8# tar xf ../file-5.22.tar.gz -C ..
  2. root:/sources/zlib-1.2.8# cd ../file-5.22
  3. root:/sources/file-5.22# ./configure --prefix=/usr/ && make -j8 && make check && make install
3.9 binutils
  1. root:/sources/file-5.22# expect -c "spawn ls"
  2. spawn ls
  3. root:/sources/file-5.22# tar xf ../binutils-2.25.tar.bz2 -C ..
  4. root:/sources/file-5.22# mkdir -pv ../binutils-build
  5. mkdir: created directory '../binutils-build'
  6. root:/sources/file-5.22# cd ../binutils-build/
  7. root:/sources/binutils-build# ../binutils-2.25/configure --prefix=/usr \
  8. > --enable-shared \
  9. > --disable-werror
  10. root:/sources/binutils-build# make tooldir=/usr -j8
  11. root:/sources/binutils-build# make -k check
  12. root:/sources/binutils-build# make tooldir=/usr install
3.10 gmp
  1. root:/sources/binutils-build# tar xf ../gmp-6.0.0a.tar.xz -C..
  2. root:/sources/binutils-build# cd ../gmp-6.0.0
  3. root:/sources/gmp-6.0.0# ./configure --prefix=/usr \
  4. > --enable-cxx \
  5. > --docdir=/usr/share/doc/gmp-6.0.0a
  6. root:/sources/gmp-6.0.0# make -j8
  7. root:/sources/gmp-6.0.0# make html

  8. root:/sources/gmp-6.0.0# make check 2>&1 | tee gmp-check-log

  9. root:/sources/gmp-6.0.0# awk '/tests passed/{total+=$2} ; END{print total}' gmp-check-log
  10. 188
  11. root:/sources/gmp-6.0.0# make install
  12. root:/sources/gmp-6.0.0# make install-html

3.11 mpfr
  1. root:/sources/gmp-6.0.0# tar xf ../mpfr-3.1.2.tar.xz -C ..
  2. root:/sources/gmp-6.0.0# cd ../mpfr-3.1.2
  3. root:/sources/mpfr-3.1.2# patch -Np1 -i ../mpfr-3.1.2-upstream_fixes-3.patch
  4. root:/sources/mpfr-3.1.2# ./configure --prefix=/usr \
  5. > --enable-thread-safe \
  6. > --docdir=/usr/share/doc/mpfr-3.1.2
  7. root:/sources/mpfr-3.1.2# make -j8
  8. root:/sources/mpfr-3.1.2# make html
  9. root:/sources/mpfr-3.1.2# make check
  10. root:/sources/mpfr-3.1.2# make install
  11. root:/sources/mpfr-3.1.2# make install-html
3.12 mpc
  1. root:/sources/mpfr-3.1.2# tar xf ../mpc-1.0.2.tar.gz -C ..
  2. root:/sources/mpfr-3.1.2# cd ../mpc-1.0.2
  3. root:/sources/mpc-1.0.2# ./configure --prefix=/usr --docdir=/usr/share/doc/mpc-1.0.2
  4. root:/sources/mpc-1.0.2# make -j8
  5. root:/sources/mpc-1.0.2# make html
  6. root:/sources/mpc-1.0.2# make install
  7. root:/sources/mpc-1.0.2# make install-html
3.13 gcc-4.9.2
TMD 写了这么多一个,在提交时报个错全没有了!TMD
TMD TMD
TMD


3.**
最后改grub.cfg的时候,因为我这是在ubuntu系统之下本身就有了grub的引导
所以这儿就没有必要运行grub-install了只需要修改一下grub.cfg文件就可以了
在宿主机子上添加如下即可:
  1. cong@msi:~$ sudo vi /boot/grub/grub.cfg
  2.  menuentry "LFS_Cong Linux 3.19-lfs-7.7-systemd"{
  3.  insmod gzio
  4.  insmod part_msdos
  5.  insmod ext2
  6.  set root='hd0,msdos5'
  7.  linux /boot/vmlinuz-3.19-lfs-7.7-systemd root=/dev/sda5 ro
  8.  }
set root='hd0,msdos5'      -->/dev/sda5是LFS的分区
这样就完成了LFS系统的引导了。  


阅读(2221) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~