首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从由llvmlite生成的IR生成二进制代码

从由llvmlite生成的IR生成二进制代码
EN

Stack Overflow用户
提问于 2017-06-23 05:35:39
回答 2查看 146关注 0票数 1

有没有人知道是否可以用llvmlite从IR生成二进制代码?在llvm中,我们可以简单地clang -emit-llvm -o foo.bc -c foo.c。如果我使用的是llvmlite呢?

EN

回答 2

Stack Overflow用户

发布于 2017-07-25 05:07:37

据我所知,llvmlite没有包含链接器。您可以使用以下命令编写对象代码,例如

代码语言:javascript
复制
target = llvm.Target.from_default_triple()
machine = target.create_target_machine()
with llvm.create_mcjit_compiler(module, target) as mcjit:
     def on_compiled(module, objbytes):
         open('mymodule.o', 'w').write(objbytes)
     mcjit.set_object_cache(on_compiled, lambda m: None)
     mcjit.finalize_object()

然后使用您通常通过gccclang使用的标准链接器ld来链接目标文件。LLVM4似乎附带了自己的链接器lld,这是一个手动使用的选项,但llvmlite不在版本4上,因此无法公开该功能。

例如,在我的机器上,我可以从bash运行

代码语言:javascript
复制
 $ gcc -o llvmapp mymodule.o
 $ ./llvmapp
票数 0
EN

Stack Overflow用户

发布于 2019-11-03 22:51:41

到目前为止,似乎最简单的解决方案是直接用python编写所有代码,但这是以运行时间为代价的,我知道有些人并不关心这一点。

不幸的是,我不得不同意@Jimmy的说法。我还没有看到任何东西,现在是2019年了,两年过去了,仍然什么都没有。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44709751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档