我很好奇是否可以在没有 GNU 工具链(gcc+autotools)的情况下构建 Linux 内核。
我发现这是可能的:应用补丁后llvm.linuxfoundation.org,可以用 clang 构建 Linux 内核。使用了 GNU 链接器。
其替代方案ld
也是gold
GNU binutils 的一部分。流行的 musl+clang 工具链 ELLCC 也使用 GNU binutils。
还有更多的选择:(lld
没有稳定版本),mclinker
(没有稳定版本)。
是否存在 GNU binutils 的替代品?也许,在 Mac OS X 或 FreeBSD 上构建并不涉及 GNU 工具。
答案1
截至 2018 年,lld
似乎已经足够成熟,可以在生产中使用,并非 100% 兼容bfd
,但在大多数情况下可以用作直接替代品。
更新:最近,出现了一个新的链接器,并且正在积极开发中:mold
。
答案2
UNIX 链接器可以在源代码中免费获得(在 CDDL 下)。源代码随 OpenSolaris 项目提供。
由于一些缺陷和错误,GNU 链接器无法替代 Solaris 上的 UNIX ld。另一方面,Linux 上的链接可能取决于 gld 偏差(例如,不同的命令行选项和不兼容的映射文件实现)。
您可能想检查 OpenSolaris 源代码,例如:http://schillix.sourceforge.net
链接器源位于usr/src/cmd/sgs
新加坡标准协会代表软件生成系统公平。