是否可以在没有 clang 的情况下将 LLIR 编译为二进制文件?

Is it possible to compile LLIR to binary without clang?

我正在编写一个嵌入 LLVM API 的编译器。通过从 llc 工具复制代码,我可以输出汇编语言或目标文件,我可以使用 clang 或汇编器将其转换为二进制文件。

但我希望我的编译器是独立的。是否可以使用 LLVM 将 LLIR 转换为二进制文件?这似乎是 LLVM 工具包中应该有的东西。

是的,这是可能的,这也是由 llc-filetype=obj 参数完成的。

您可以参考 compileModule 函数以了解如何使用编程 API。

请注意,这只会为给定的翻译单元生成目标文件。您还需要一个链接器将其转换为适当的可执行文件或库。 LLVM 链接器 lld 也可以作为库嵌入到客户端应用程序中,因此最终您将能够创建一个自托管编译器。