LLVM:实现目标代码的链接

LLVM: Implement linking of the object code

我在追万花筒tutorial。发出目标代码非常简单,但现在我想实现链接步骤,以便我的玩具编程语言可以直接编译成二进制文件(因此不需要 clang 用法)。我如何使用 LLVM 实现此目的?

至于 "no clang necessary":LLVM 有一个名为 LLD 的链接器,它是 LLVM 项目的一部分。根据您安装 LLVM 的方式,它应该是发行版的一部分。

LLD参考你安装的版本以及使用策略。然后您将能够定义您的 makecmake 食谱。

关于您的核心问题,以下是我用自己的语言完成的一般制作流程:

  1. 编译源 -> output.ll(LLVM 程序集)
  2. 优化程序集 -> output.oll(使用 opt
  3. 生成目标程序集 -> output.s
  4. Assemble 反对(使用 as)-> output.o
  5. Link(我使用的是 clang,但这可以与 lld 交换)