В llvmlite экземпляр TargetData необходим для получения размера ABI объекта. Это имеет смысл, учитывая, что размер объекта зависит от размера слова и выравнивания. Если я хочу немедленно скомпилировать и использовать код в текущем процессе, мне не нужно ничего, кроме целевых данных текущего процесса. Документы, похоже, предполагают, что это позволит надежно получить целевые данные для текущего процесса.
Код: Выделить всё
import llvmlite.binding as llvm
# Initialize the LLVM
# https://llvmlite.readthedocs.io/en/latest/user-guide/binding/examples.html
llvm.initialize()
llvm.initialize_native_target()
llvm.initialize_native_asmprinter()
target_string = llvm.get_process_triple()
target_data = llvm.create_target_data(target_string)
Однако последняя строка прерывает процесс Python с ошибкой:
Код: Выделить всё
LLVM ERROR: Unknown specifier in datalayout string
Aborted (core dumped)
Предположительно, это связано с тем, что моя тройка процессов — x86_64-unknown-linux-gnu. У меня Ubuntu 20.04 на Lenovo P53, так что это не должно быть так уж странно.
Как мне получить рабочие TargetData по умолчанию для текущего процесса?
Подробнее здесь:
https://stackoverflow.com/questions/788 ... nt-process