libtool .la 文件仅在链接到静态库时有用。在使用动态共享库时它们没有意义,甚至可能有害,特别是在使用非 autotools 构建系统时容易产生问题。继续在 chroot 环境中运行命令,删除它们:
find /usr/{lib,libexec} -name \*.la -delete
删除临时工具的文档,以防止它们进入最终构建的系统,并节省大约 35 MB:
rm -rf /usr/share/{info,man,doc}/*
本节中的其余步骤都是可选的。不过,一旦您开始在第 8 章中安装软件包,临时工具就会被覆盖。因此,按照下面描述的步骤备份临时工具可能是个好主意。其余步骤只有在您的磁盘空间非常紧张时才需要执行。
以下步骤在 chroot 环境之外进行。换句话说,您需要在继续操作之前退出 chroot 环境。这样做的主要原因是:
保证在操作时,目标文件不会被使用。
访问 chroot 环境之外的文件系统位置,以写入或读取备份档案,备份档案不应存放在 $LFS
目录树中,以保证安全。
退出 chroot 环境,并解除挂载内核虚拟文件系统:
以下给出的所有步骤都以 root
身份执行。请非常小心地执行命令,错误的命令可能修改您的宿主系统。特别注意环境变量 LFS
会自动为用户 lfs
设定,但可能没有为 root
设定。无论何时,只要准备以 root
身份执行命令,一定要确认 LFS
变量正确设定。第 2.6 节 “设置 $LFS
环境变量”已经讨论了这个问题。
exit umount $LFS/dev{/pts,} umount $LFS/{sys,proc,run}
如果 LFS 分区比较小,好消息是,有些无用的内容可以删除。到现在为止,已经构建的可执行文件和库包含大约 90MB 的无用调试符号。
从二进制文件移除调试符号:
strip --strip-debug $LFS/usr/lib/* strip --strip-unneeded $LFS/usr/{,s}bin/* strip --strip-unneeded $LFS/tools/bin/*
以上命令会跳过一些文件,并报告说无法识别它们的格式。这些文件大多数都是脚本文件,而不是二进制文件。
注意不要对库文件使用 --strip-unneeded
选项。这会损坏静态库,结果工具链软件包都要重新构建。
现在,您应该保证 chroot 分区有至少 5 GB 的可用空间,以在下一阶段构建和安装 Glibc 和 GCC。如果空间足够构建和安装 Glibc,那么构建和安装剩余的软件包就不成问题。您可以使用命令 df -h $LFS 查询磁盘可用空间。
现在已经建立了必要的工具,可以考虑备份它们。如果对之前构建的软件包进行的各项检查都没有发现问题,即可判定您的临时工具状态良好,可以将它们备份起来供以后重新使用。如果在后续章节发生了无法挽回的错误,通常来说,最好的办法是删除所有东西,然后 (更小心地) 从头开始。不幸的是,这也会删除所有临时工具。为了避免浪费时间对已经构建成功的部分进行返工,可以准备一个备份。
确认在 root
的主目录中,有至少 600 MB 的可用存储空间
(源代码压缩包也会被包含在备份档案中)。
运行以下命令,创建备份档案:
cd $LFS && tar -cJpf $HOME/lfs-temp-tools-10.1-mips64el-systemd.tar.xz .
可以将 $HOME
替换成您选择的其他目录,如果您不想将备份存储在
root
的主目录中:
如果您犯下了一些错误,并不得不重新开始构建,您可以使用备份档案还原临时工具,节约一些工作时间。由于源代码在 $LFS
中,它们也包含在备份档案内,因此不需要重新下载它们。在确认 $LFS
设定正确后,运行以下命令从备份档案进行还原:
cd $LFS &&
rm -rf ./* &&
tar -xpf $HOME/lfs-temp-tools-10.1-mips64el-systemd.tar.xz
再一次复查环境是否配置正确,即可继续构建系统。
如果您在移除调试符号,进行备份,或从备份进行恢复时退出了 chroot 环境,记得按照第 7.3 节 “准备虚拟内核文件系统”的描述重新挂载内核虚拟文件系统,并重新进入 chroot 环境 (参阅第 7.4 节 “进入 Chroot 环境”),再继续进行构建。