4

最近我一直在研究 LLVM 作为编译器项目的后端,这看起来很有希望。

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

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

4

1 回答 1

3

LLVM(通过您提到的 MC 库)可以为流行的架构生成目标文件(x86 可以说是最成熟的)。这是一个相对较新的进步——在 MC 之前,LLVM 没有功能汇编器。确保使用最新发布的 LLVM 版本(目前是 3.0,但很快就会是 3.1)。

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

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

于 2012-04-25T06:52:11.827 回答