0
有誰知道是否有可能從IR生成的二進制代碼與llvmlite生成?在llvm中,我們可以簡單地使用clang -emit-llvm -o foo.bc -c foo.c.如果我使用llvmlite會怎麼樣?從IR生成二進制代碼從llvmlite生成
有誰知道是否有可能從IR生成的二進制代碼與llvmlite生成?在llvm中,我們可以簡單地使用clang -emit-llvm -o foo.bc -c foo.c.如果我使用llvmlite會怎麼樣?從IR生成二進制代碼從llvmlite生成
據我所知,llvmlite不包括鏈接器。你可以寫與目標代碼,例如,
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()
然後用你的標準鏈接ld
,通常你會通過gcc
或clang
必須連接到目標文件。 LLVM 4似乎隨附自己的鏈接器lld
,這是手動使用的選項,但llvmlite不在版本4上,並且無法公開該功能。
在我的機器,例如,我可以從bash
$ gcc -o llvmapp mymodule.o
$ ./llvmapp
運行