是否可以在没有 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
也可以作为库嵌入到客户端应用程序中,因此最终您将能够创建一个自托管编译器。
我正在编写一个嵌入 LLVM API 的编译器。通过从 llc 工具复制代码,我可以输出汇编语言或目标文件,我可以使用 clang 或汇编器将其转换为二进制文件。
但我希望我的编译器是独立的。是否可以使用 LLVM 将 LLIR 转换为二进制文件?这似乎是 LLVM 工具包中应该有的东西。
是的,这是可能的,这也是由 llc
和 -filetype=obj
参数完成的。
您可以参考 compileModule
函数以了解如何使用编程 API。
请注意,这只会为给定的翻译单元生成目标文件。您还需要一个链接器将其转换为适当的可执行文件或库。 LLVM 链接器 lld
也可以作为库嵌入到客户端应用程序中,因此最终您将能够创建一个自托管编译器。