#c #operating-system #compiler-construction #llvm #llc
#c #операционная система #компилятор-построение #llvm #ооо
Вопрос:
Я использую привязки LLVM c для написания компилятора, и когда я пытаюсь создать цель из целевой тройки по умолчанию (x86_64-pc-windows-msvc), LLVM сообщает, что зарегистрированных целей нет.
llvm::InitializeNativeTarget();
llvm::InitializeAllTargetInfos();
llvm::InitializeAllTargets();
llvm::InitializeAllTargetMCs();
llvm::InitializeAllAsmParsers();
llvm::InitializeAllAsmPrinters();
auto target_triple = llvm::sys::getDefaultTargetTriple();
std::string err; // unable to find target for this triple (no targets are registered)
auto target = llvm::TargetRegistry::lookupTarget(target_triple, err);
llvm::TargetRegistry::printRegisteredTargetsForVersion(llvm::outs()); // prints (none)
Я построил LLVM из исходного кода и использовал флаг LLVM_TARGETS_TO_BUILD=all, чтобы включить все цели. Однако, когда я вызываю llc —help, отображается большой список целей. Итак, почему код llvm C не может найти цели?
Комментарии:
1. Я сталкиваюсь с той же проблемой с недавно созданной llvm. Вы нашли решение?
2. поэтому я использовал каталог llvm / lib вместо каталога llvm / Release / lib, то же самое для конфигурации отладки. После связывания с библиотеками в Release / lib это сработало!
3. Я также столкнулся с этой ошибкой в llvm12