我正在尝试遵循 LFS 书,但无法解决这个问题:我们在目标分区的第 5 章中构建了 GCC 编译器,为什么在进入 chroot 模式后我们还要再次这样做?有什么意义,为什么不使用以前的版本。 GlibC 也是如此。
答案1
我相信构建chroot
会检查构建 GCC 和 GlibC 的所有辅助文件和程序是否存在,并且独立于“构建系统”。通常,编译编译器一点也不简单。我相信 GCC 会需要bison
各种flex
头文件、配置文件以及谁知道还有什么。构建chroot
只是构建系统(不是 LFS)和最终 LFS 安装之间的中间步骤,最终 LFS 安装应该是自托管的。
由于 GCC 的运行时环境很复杂(PATH
以及LD_LIBRARY_PATH
其他配置项),因此初始 GCC 编译器也可能会泄漏一些副作用。我找不到这篇论文,但我记得可能需要用上一代编译器来编译多达 5 代编译器才能让所有奇怪的错误和依赖关系浮出水面。
答案2
当您输入 a 时,这意味着您有一个空系统,没有安装任何东西,也没有工作,因此您需要工具来编译您在第 5 章中所做的事情。这也是您给出指向的chroot
原因工具目录。chroot
/tools/bin/env
PATH
第 6 章只是通过下载软件包并安装它们来填充 chroot,包括gcc
使用第 5 章中的工具编译它们。