我希望clang将我的C/C++代码编译成LLVM位码,而不是二进制可执行文件.我怎样才能做到这一点呢?
如果我有LLVM位代码,我如何进一步将其编译成二进制可执行文件?
在编译成二进制可执行文件之前,我想将自己的一些代码添加到LLVM位代码中.
我希望clang将我的C/C++代码编译成LLVM位码,而不是二进制可执行文件.我怎样才能做到这一点呢?
如果我有LLVM位代码,我如何进一步将其编译成二进制可执行文件?
在编译成二进制可执行文件之前,我想将自己的一些代码添加到LLVM位代码中.
给定一些C/C++文件foo.c
:
> clang -S -emit-llvm foo.c
生成foo.ll
,这是一个LLVM IR文件.
-emit-llvm
选项也可以直接传递给编译器前端,而不是通过-cc1
传递给驱动程序:
> clang -cc1 foo.c -emit-llvm
使用IR生成foo.ll
.-cc1
增加了一些很酷的选项,比如-ast-print
.有关更多详细信息,请查看-cc1 --help
.
要进一步编译LLVM IR以进行组装,请使用llc
工具:
> llc foo.ll
使用汇编生成foo.s
(默认为运行它的机器体系 struct ).llc
是LLVM工具之一-here is its documentation.