llvm нет зарегистрированных целей при сборке из исходного кода

#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