2017-06-22 36 views

回答

0

據我所知,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,通常你會通過gccclang必須連接到目標文件。 LLVM 4似乎隨附自己的鏈接器lld,這是手動使用的選項,但llvmlite不在版本4上,並且無法公開該功能。

在我的機器,例如,我可以從bash

$ gcc -o llvmapp mymodule.o 
$ ./llvmapp 
運行