请指导我完成构建基本工具链所需的步骤,足以构建可启动的linux映像,并以您建议的方式讨论为什么要完成。
非常感谢现有文档的指针。我从Scratch学习了Linux,并且拥有使用特定于分发工具构建Gentoo映像的经验。我还查看了用于为嵌入式设备构建交叉编译工具链的各种工具的文档。
然而,这些工具的文档仅讨论了实际使用这些工具的编译工具链,而不是他们如何做到这一点,以及为什么没有区别。通常这些资源也提到其他工具以不同的方式(当然更糟),所以我觉得简单地阅读源代码只会帮助我了解给定的构建工具是如何工作的,而不是提供对实际过程的洞察力和它&# 39;可能的变化。
所以我对有关自动构建工具链的工具的讨论不感兴趣,而是对注释如何手动执行的说明感兴趣。另请注意,目前我计划在同一台机器上构建和运行映像,因此我不需要交叉编译。但我仍然对有关交叉编译的讨论感兴趣,但重点应该放在其他地方。构建可引导映像还需要什么才不是这个问题的一部分 - 只需构建工具链就可以实现它。
为了帮助您了解我的立场,我有一些问题和一些我相信的事情: 我理解即使在本地构建时,将用于构建映像的工具链与主机的工具链分开也很重要,以避免链接到以后可能无法使用的库(其他原因?)。我不知道是否足以相应地调整环境变量(哪个?)或者最好是建立工具链,chroot和重建(我从重建中得到什么?)。如果做前者会出现什么问题?我已经读过,构建gcc两次(使用第一个构建第二个)是过度的,因为它的构建系统无论如何都会这样做。如果是这样,它可以检测到两个构建中的差异,它们为什么重要?如果两个版本有所不同,那么必然出现问题,如果它们做了什么就会做些什么。正确完成交叉编译会产生与本机完成时完全相同的二进制文件吗?如果没有,为什么毕竟不是那么糟糕,许多项目选择那种永远不会少的东西?
答案 0 :(得分:1)
您应该查看LinuxFromScratch,其名称旨在从头开始构建一个可用的Linux系统(with a complete part about the toolchain)。