企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 5.1\. 简介 本章介绍如何编译和安装一个小的 Linux 系统。这个系统将仅包含必要的工具,用于构建[第六章](../chapter06/chapter06.html)中最终的 LFS 系统。 构建这个小系统分两步进行,第一步是构建一个新的不依赖于宿主系统的工具链(编译器、汇编器、连接器、库文件以及一些有用的软件),第二个步骤是利用这个工具链去构建其它基本的工具。 本章中编译的文件将安装在 `$LFS/tools` 目录下,这样可以与下一章将要安装的软件以及宿主系统区分开来。这些软件包编译出来是起临时作用的,我们不希望这些软件和即将建立的 LFS 系统混杂在一起。 ### 重要 在运行每一个软件包的编译指令之前,都需要用 `lfs` 用户解开这个软件包,并用 **cd** 命令进入软件包解开后的目录。编译指令假定您使用的是 **bash** shell 。 [译者注]举例来说,对于第一个软件包 Binutils-2.16.1 ,在执行书上的第一个命令 ``` mkdir -v ../binutils-build ``` 之前,必须先执行下列解包和切换目录的命令: ``` tar -xvjf $LFS/sources/binutils-2.16.1.tar.bz2 -C $LFS/sources/ cd $LFS/sources/binutils-2.16.1/ ``` 其他软件包以此类推。 某些软件包在编译之前需要打上补丁,但仅仅是需要补丁来解决某个问题的时候。一个补丁可能本章和下一章都会用到,也可能只在其中一章用到。因此,当某个软件包存在一个补丁,而在编译时并未让你使用这个补丁时,不要以为是我们忘记了。事实上,那个补丁只需要在另外一次编译中被用到。而应用某个补丁的时候,也可能会出现某些关于 _offset_ 或 _fuzz_ 的警告信息,不要理会,这个补丁仍然会被成功的应用。 大多数软件包的编译过程中,屏幕上可能会滚过一些警告信息,这些是正常且可以被安全忽略的。这些警告就像显示的那样:警告的是不标准,却不是不正确的 C 或 C++ 语法。C 标准常常会变,而某些软件包仍然使用老的标准,这不是问题,仅仅导致一些警告信息而已。 ### 重要 在安装完每个软件包之后,删除其源代码和编译目录,除非另有特别说明。删除源文件可以节省磁盘空间,并且可以在下次需要安装同一个软件包的时候不会出现配置错误。 [译者注]举例来说,对于第一个软件包 Binutils-2.16.1 ,在执行完书上的最后一个命令 ``` cp -v ld/ld-new /tools/bin ``` 之后,可以使用下列命令删除其源文件和编译目录: ``` rm -fr $LFS/sources/binutils-2.16.1/ rm -fr $LFS/sources/binutils-build/ ``` 其他的软件包以此类推。 最后一次检查 `LFS` 环境变量是否设置正确: ``` echo $LFS ``` 请确认输出显示的是挂载 LFS 分区的路径,在我们的例子中是 `/mnt/lfs` 。