- 作者信息:Dr. Brian Robert Callahan,是一名学术人士和开发者,关注更美好的科技社会生活。
主要内容:
- 探讨能否用 Clang 替代 GCC 中的 GNU as 作为汇编器:在 FreeBSD 14.0-RELEASE 系统中,FreeBSD 不再提供 /usr/bin/as 二进制文件,而 LLVM 提供了链接器等工具,引发了对 GCC 能否成为 LLVM 系统的精品前端的思考。
实验过程及遇到的问题:
- 计划让 gcc 用 clang 作为汇编器完成完整的 3 阶段引导,但过程中遇到诸多问题,如 clang 抱怨缺少 -x 标志、配置脚本出错、链接器出错(出现重复符号错误)、TLS 相关问题等。
- 为解决这些问题,作者编写了 D 语言的包装程序,构建了新的 clang 并修改配置选项,还需安装 binutils 包以使用 GNU ld 等。
- 最终结果:经过多次尝试和调整,gcc 的编译最终成功,表明 clang 可以作为 gcc 的汇编器,虽不完全相同但足够好用。同时发现 clang 缺少重要功能,需切换到 llvm-mc 作为汇编器,并更新包装程序。
- 结论:可以用 clang 作为 gcc 的汇编器,llvm-mc 可能更好,其是否有用因人而异,作者认为可进一步改进 llvm-mc 或添加包装工具,使 GCC 更接近成为 LLVM 系统的精品前端。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。