首先,这不是我第一次尝试构建 LFS 系统 - 我已经成功构建了 LFS 7.8 和 LFS 7.8-systemd。
我想用 GCC+GlibC 替换埃莱克,即 Clang/LLVM+musl。
它有一些限制 - 最值得注意的是它目前缺乏对动态链接的支持 - 但预期的结果是交叉编译(或者更好的是,在设备上编译)armhf LFS 构建,作为实验的一部分在我的旧设备上将 Android 完全替换为 Linux,因此二进制文件的效率很重要(这也是我对使用 ELLCC 感兴趣的原因。)
真正的问题是,我该如何去做呢?简单地用 ELLCC 替换 GCC 和 GlibC 甚至无法让我跳过安装 Linux API 标头的过程。我可以单独从源代码编译一些程序,但它们最终总是以某种方式依赖于主机系统。
答案1
你是对的 - 简单地交换工具链不会神奇地使它工作。
作为一名经验丰富的 musl 用户,我可以说这不会“开箱即用”。很多很多程序仍然需要 glibc 只提供的特殊情况,甚至 musl 中没有,并且尤其如果没有 glibc,许多 GNU 项目程序甚至无法编译。
目前,修复流行但损坏的程序的重大工作正在进行中,如果您愿意,您可以监视和参与。有像这样的项目破坏linux它为此类程序生成补丁,使它们能够与 musl(以及其他鲜为人知的 libc)一起使用,因此,如果您足够勇敢,您可以尝试在这些项目的帮助下修复主要的构建损坏。
为了让普通的 LFS 工作起来,你最终可能会大量修改这本书。 (回到 2009 年,当我上次构建 LFS 时,我记得仍然有一些无法解释的指令可以解决一些 glibc 特殊情况)
作为替代方案,您可以尝试:
- 嵌入式CLFS,它用 musl 取代了 glibc。您可以将这两本书合并起来,制作出适合您情况的书。尽管它完全省略了经典的 GNU 软件。
- 使用新的基于 musl 的 Linux 发行版之一。作为例子,我可以命名破坏和高山,但是穆斯林维基名字更多。至少您可以在主机上构建二进制文件,然后它们尝试将它们导入您的设备。
由于您正在尝试为嵌入式平台构建二进制文件,我强烈建议您不要搞乱 GNU 软件,而是尝试轻量级替代品反而。