compiler-construction – LLVM中机器代码生成的状态?

最近我一直在研究LLVM作为编译器项目的后端,看起来非常有前途.

但是,似乎LLVM可以JIT代码(这非常酷!)或者它可以导出本机平台的程序集,但它实际上不能创建本机可执行文件.这似乎是LLVM声称的编译器后端基础结构的主要限制.

我正在开发一个项目,我希望编译的可执行文件能够在没有安装LLVM的情况下运行(即没有JIT). LLVM是否有任何可用于生成机器代码(而不是LLVM bitcode)的本机汇编程序?

最佳答案 LLVM(通过您提到的MC库)可以为流行的体系结构生成目标文件(x86可以说是最成熟的).这是一个相对较新的进展 – 在MC之前,LLVM没有功能组装器.确保使用最新发布的LLVM版本(目前为3.0但很快将为3.1).

此时LLVM的功能停止了.然后,您需要一个平台链接器来实际将目标文件链接到可执行文件中.例如,ld用于Linux-y平台.

请注意,今天(2012年4月)也是如此,但未来不太可能如此. LLD(LLVM链接器)项目现在处于早期阶段,旨在提供基于LLVM的链接器,该链接器将直接使用LLVM工具跳转生成完全可加载的可执行文件(和共享库)所需的额外步骤,而无需依赖外部工具.

点赞