小编典典

如何使 clang 编译为 llvm IR

all

我希望 clang 将我的 C/C++ 代码编译为 LLVM 位码,而不是二进制可执行文件。我怎样才能做到这一点?

如果我有 LLVM 位码,如何进一步将其编译为二进制可执行文件?

在编译为二进制可执行文件之前,我想将一些我自己的代码添加到 LLVM 位码。


阅读 188

收藏
2022-08-17

共1个答案

小编典典

给定一些 C/C++ 文件foo.c

> clang -S -emit-llvm foo.c

生成foo.llLLVM IR 文件。

-emit-llvm选项也可以直接传递给编译器前端,而不是通过以下方式传递给驱动程序-cc1

> clang -cc1 foo.c -emit-llvm

foo.ll使用 IR生成。-cc1添加了一些很酷的选项,例如-ast-print. 查看-cc1 --help更多详情。


要进一步编译 LLVM IR 以进行组装,请使用以下llc工具:

> llc foo.ll

与装配一起生产foo.s(默认为您运行它的机器架构)。llc是 LLVM 工具之一
-这是它的文档

2022-08-17