最近我一直在研究LLVM作为编译器项目的后端,看起来非常有希望。
但是,似乎LLVM可以使用JIT代码(非常酷!),或者它可以为本机平台导出程序集,但它实际上无法创建本机可执行文件。这似乎是LLVM声称的编译器后端基础结构的主要限制。
我正在开发一个项目,我希望编译的可执行文件能够在没有安装LLVM的情况下运行(即没有JIT)。 LLVM是否有可用于生成机器代码(而不是LLVM bitcode)的本机汇编程序?
答案 0 :(得分:2)
LLVM(通过您提到的MC库)可以为流行的体系结构生成目标文件(x86可以说是最成熟的)。这是一个相对较新的进展 - 在MC之前,LLVM没有功能组装器。确保使用最新发布的LLVM版本(目前为3.0但很快将为3.1)。
此时LLVM的功能停止了。然后,您需要一个平台链接器来实际将目标文件链接到可执行文件中。例如,ld
用于Linux-y平台。
请注意,今天(2012年4月)也是如此,但未来不太可能如此。 LLD(LLVM链接器)项目现在处于早期阶段,旨在提供基于LLVM的链接器,该链接器将直接使用LLVM工具跳转生成完全可加载的可执行文件(和共享库)所需的额外步骤,而无需依赖外部工具。 / p>