Patch-2.5.4
tar xvf /lfs-sources/patch-2.5.4.tar.gz
cd patch-2.5.4
./configure --prefix=/tools
make
make install
cd ..
rm -rf patch-2.5.4
Perl-5.8.8
tar xvf /lfs-sources/perl-5.8.8.tar.bz2
cd perl-5.8.8
patch -Np1 -i /lfs-sources/perl-5.8.8-libc-2.patch
./configure.gnu --prefix=/tools -Dstatic_ext='Data/Dumper Fcntl IO POSIX'
make perl utilities
cp -v perl pod/pod2man /tools/bin
mkdir -pv /tools/lib/perl5/5.8.8
cp -Rv lib/* /tools/lib/perl5/5.8.8
cd ..
rm -rf perl-5.8.8
Sed-4.1.5
tar xvf /lfs-sources/sed-4.1.5.tar.gz
cd sed-4.1.5
./configure --prefix=/tools
make
make install
cd ..
rm -rf sed-4.1.5
Tar-1.18
tar xvf /lfs-sources/tar-1.18.tar.bz2
cd tar-1.18
./configure --prefix=/tools
make
make install
cd ..
rm -rf tar-1.18
Texinfo-4.9
tar xvf /lfs-sources/texinfo-4.9.tar.bz2
cd texinfo-4.9
./configure --prefix=/tools
make
make install
cd ..
rm -rf texinfo-4.9
Util-linux-2.12r
tar xvf /lfs-sources/util-linux-2.12r.tar.bz2
cd util-linux-2.12r
sed -i 's@/usr/include@/tools/include@g' configure
./configure
make -C lib
make -C mount mount umount
make -C text-utils more
cp -v mount/{,u}mount text-utils/more /tools/bin
cd ..
rm -rf util-linux-2.12r
Stripping
这步是可有可无的,如果你打算今后还要用/tools里面的东西,那么可以strip一下来减少占用的磁盘空间,但如果做完目标系统后就删除了,不Strip也可以,反正最后也是要删掉的。
strip --strip-debug /tools/lib/*
strip --strip-unneeded /tools/{,s}bin/*
info和man里面的内容在制作过程中没什么用处,所以删掉也没啥关系。
rm -rf /tools/{info,man}
退出lfs用户(这步不要少了)
 
  

到目前为止,工具链已经制作完成,接着就要开始制作真正的目标系统

如果你到目前为止没出什么问题,那么恭喜你成功的通过了一关,不过接着还有相当长的路。
现在你应该是处于root用户状态的,看看你的命令行提示符是不是回到了#。
从现在开始不在需要lfs用户来制作系统了,因此我们用
 
  
重新设置目录权限,便于后面的工作。
创建三个重要目录
 
  
创建两个目标系统所必须的设备文件
 
  
这个时候也许你想睡觉关机了,那么重新开机后回到工作状态的步骤是:
1.重新启动计算机,并从LiveCD启动
2.加载分区
 
  
3.加载交换分区(如果不想用交换分区或者没有交换分区可跳过此步骤)
 
  
相关知识点:
这时候已经制作好了工具链,因此可以不需要建立根目录下的tools链接了。
利用主系统加载几个重要的文件系统,请注意这个步骤对于后面的工作极其重要。
 
  
相关知识点:
mount命令加载的分区在重新启动后就失效了,所以在这其中重新启动则需要重新加载。
这里为了方便使用源码包,我将光盘加载到目标系统里
 
  
这个步骤不是必须的,如果你想使用,那么在重新启动后进入工作状态的步骤中在相应的位置上加入。
这里有一个更简单的办法,将lfs-sources里面所有源码包复制到$LFS/sources目录中,这步对于后面在第六章使用源代码将非常方便。
 
  
Chroot到目标系统的目录下,以便不受主系统的影响来制作目标系统
 
  
注意:这个时候你的提示符会是“I have no name!”,没有关系继续我们的工作很快就可以正常了。
这个时候如果你关机或重新启动,那么重新开机后回到工作状态的步骤是:
1.重新启动计算机,并从LiveCD启动
2.加载分区
 
  
3.加载交换分区(如果不想用交换分区或者没有交换分区可跳过此步骤)
 
  
4.加载必要的文件系统
 
  
5.Chroot到目标系统下
 
  
建立目标系统的目录结构
 
  
创建几个必要的链接,因为在目标系统的编译过程中,部分编译程序会用绝对路径来寻找命令或文件。
 
  
创建root及nobody用户和必要的组
 
  
重新加载bash,以使root用户起效,这样前面的提示符就不会是“I have no name!”
 
  
创建和设置几个临时文件和日志文件。
 
  

到目前为止,创建目标系统的准备工作已基本完成,下面就要开始目标系统基础软件包的安装

首先进入到源码目录下。
 
  
(此前已经将LFS需要的源码包加载到了/cdrom下,因此后面的命令将从/cdrom/lfs-sources目录下解出,如果你将源码包直接复制到了sources目录下或别的什么目录下,则要相应的修改下面的命令)
 
  
如果之前是将所有源码包复制到sources下的,则执行
 
  
从现在开始一直到第六章的Stripping Again之前,这个阶段如果你关机或重新启动,那么重新开机后回到工作状态的步骤是:
1.重新启动计算机,并从LiveCD启动
2.加载分区
 
  
3.加载交换分区(如果不想用交换分区或者没有交换分区可跳过此步骤)
 
  
4.加载必要的文件系统
 
  
5.Chroot到目标系统下
 
  
6.进入编译目录
 
  
Linux-2.6.22.5
 
  
Man-pages-2.63
 
  
man-pages的版本可以使用更新的版本。
Glibc-2.5.1
在进行之前请检查一下是否glibc-2.5.1和glibc-build这两个目录已经被删除,如果没有删除请删除后在继续。
 
  
make localedata/install-locales将安装全部的locale,如果你不想装这么多locale的话就用localedef命令来安装,LFS手册上有例子,如果仅想加入中文的locale,就用
 
  
建立几个重要文件:
 
  
删除编译目录
 
  
相关知识:
glibc的测试比较容易出现错误,比如机器慢就有可能出现超时的错误,还有一些能引起错误的LFS手册上有所提及,像超时这种错误有时候很难避免,就跳过去吧。
调整工具链
 
  
调整specs文件:
 
  
测试工具链是否被调整成功
 
  
 
  
如果显示[Requesting program interpreter: /lib/ld-linux.so.2]表示调整成功,动态库已经连接到了目标系统的/lib下。
 
  
应该显示
 
  
 
  
应该显示
 
  
 
  
应该显示
 
  
 
  
应该显示
 
  
 
  
应该显示
 
  
如果上面均显示正常,那么表明工具链调整成功,可以删除测试文件了