如何为当前进程可靠获取可用的llvmlite TargetData实例?
解决llvmlite获取默认TargetData崩溃的问题
在Ubuntu 20.04(x86_64-unknown-linux-gnu)环境下,直接通过进程三元组创建TargetData会触发解析错误,推荐通过TargetMachine间接获取适配当前架构的默认TargetData,步骤如下:
- 导入llvmlite核心模块:
from llvmlite import ir, llvm from llvmlite.binding import TargetMachine
- 获取当前进程的目标三元组并创建TargetMachine:
triple = llvm.get_process_triple() target_machine = TargetMachine(triple=triple)
- 从TargetMachine提取TargetData:
target_data = target_machine.target_data
这样获取的TargetData会自动适配x86_64架构的字长与对齐规则,可直接用于计算ABI大小等操作。
内容的提问来源于stack exchange,提问作者drhagen
相关产品推荐
相关产品推荐

