在本章里,我们会进入构建环境然后开始认真地构建 LFS 系统了。就是说,我们会 chroot 进入之前准备好的临时迷你 Linux 系统,做一些最后的准备工作,然后就开始安装软件包。
安装软件非常直观。尽管很多时候安装指令能更短而且更具通用性,但我们还是选择为每个软件包都提供完整的指令,以减小引起错误的可能性。了解 Linux 系统如何工作的关键就是知道每个软件包的作用以及为什么你(或系统)需要它。
我们不建议在编译时使用优化。这虽然可以让程序运行得快那么一点点,但是却也有可能增加编译难度以及在运行时出问题。如果在打开优化后编译失败,请试一下关闭优化编译看看行不行。就算打开优化通过了编译,考虑到源代码和编译工具之间的复杂交互,仍然存在编译不正确的风险。而且请注意 -march
和 -mtune
选项里使用的本书没有指定的值都是未经过测试的。这有可能引起工具链软件包(Binutils、GCC 和 Glibc)相关的问题。所以说,使用编译器优化选项带来的这一点点潜在好处通常不值得其所带来的风险。对于第一次构建 LFS 系统的新人,建议在构建时不要自己增加优化选项。这样构建出来的系统一样会运行得很快而且同时会很稳定。
本章里安装软件包的顺序需要严格遵守,这是为了保证不会有程序意外地依赖与 /tools
相关的目录。同样的理由,不要同时编译不同的软件包。并行地编译也许能节省一点时间(特别是在双 CPU 电脑上),但是它可能会导致程序里存在包含到 /tools
目录的硬链接,这样的话在这个目录移除后程序就不能正常工作了。
在安装指令之前,每个页面都提供了关于软件包的信息,包括它所包含的内容的精确描述,大概需要多长时间,以及在构建过程中需要多少磁盘空间。在安装指令之后,有这个软件包将安装的程序和库文件列表(以及它们的简短描述)。
第六章里软件包的 SBU 数值和所需磁盘空间包含了可能存在的测试套件数据。