是否可以将 C 代码与 llvm 位代码链接?
我有一个 llvm 位代码文件,其中包含一些有用的函数。我想从c代码中调用它。是否可以将此 C 代码与 llvm 位代码链接以生成可执行文件? 或者我必须通过 JIT 调用该函数。
I have an llvm bitcode file containing some useful functions. I want to call it from c code. Is it possible to link this c code with llvm bitcode to generate an executable?
Or I have to call the function through JIT.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
LLVM 位码必须可执行才能从 C 调用。您至少有两个选择:
llc 位码并将目标文件与 C 目标文件进行汇编/链接。
The LLVM bitcode has to be made executable to be called from C. You have at least two choices:
llc the bitcode and assemble/link the object file with your C object files.
基本上答案是肯定的,假设您没有使用某些未提及的运行时 C 语言解释器。通常,C 必须编译成某种东西,llvm 工具为您提供了目标处理器的位码和汇编语言两种选择。 C 可以转换为位码,并且所有组件都位于同一个可执行二进制文件中。从那里您可以获取所有这些部分并将它们转换为特定目标的汇编语言。
Basically the answer is yes, assuming you are not using some unmentioned runtime C language interpreter. Typically the C has to be compiled to something, the llvm tools give you two choices bitcode and assembly language for a target processor. The C can be turned into bitcode and you have all components in the same executable binary. From there you can take all of these parts and take them to assembly language for a particular target.