在 LFS 的开发周期中,我们经常修改本书中的指令,以适应更新的软件包,或利用新版本软件包提供的新特性。混用不同版本 LFS 手册中的指令会导致难以察觉的问题。这种情况通常是重用为之前的某个 LFS 版本创建的脚本所致。我们强烈反对这种重用。如果您出于某种原因,一定要重用为旧版本 LFS 创建的脚本,您必须非常小心地更新脚本,使其内容和当前版本的 LFS 手册一致。
下面是在构建每个软件包时都要注意的事项:
某些软件包在编译前需要打补丁,然而补丁只在绕过特定问题时才需要。补丁常常在本章和下一章都要使用,但有时,对于多次构建的软件包,在初次构建时可能并不需要补丁。因此,如果发现本书给出的步骤中没有使用某个下载好的补丁,这是正常的,不必担心。在应用补丁时可能会出现关于 offset 或者 fuzz 的警告信息。不用担心这些警告,补丁还是会成功应用到源码上的。
在编译大多数软件包时,屏幕上都会出现一些警告。这是正常的,可以放心地忽略。这些警告就像它们描述的那样,是关于一些过时的,但并不是错误的 C 或 C++ 语法。C 标准经常改变,一些软件包仍然在使用旧的标准。这并不是一个严重的问题,但确实会触发警告。
最后确认 LFS
环境变量是否配置正确:
echo $LFS
确认上述命令输出 LFS 分区挂载点的路径,如果使用了本书的例子,就是 /mnt/lfs
。
最后强调两个重要事项:
本书中的命令假设宿主系统需求中的所有内容,包括符号链接,都被正确设置:
bash 是正在使用的 shell。
sh 是指向 bash 的符号链接。
/usr/bin/awk 是指向 gawk 的符号链接。
/usr/bin/yacc 是指向 bison 的符号链接,或者一个执行 bison 的小脚本。
下面给出软件包构建过程的概要。