我已將我的傳球寫入llvm/lib/Transforms
,其名稱爲createABCDPass
。我已經添加了下面的代碼在我的通行證:LLVM添加傳遞 - 鏈接錯誤
namespace llvm { FunctionPass *createABCDPass(); }
FunctionPass *llvm::createABCDPass() { return new AbcRemoval(); }
其中AbcRemoval
是類的通行證。
在那之後,我曾經爲了做一個向前聲明中lib/CodeGen/LLVMTargetMachine.cpp
認識到我的通行證:當我運行就LLVM
namespace llvm { FunctionPass *createABCDPass(); }
PM.add(createABCDPass());
但是,我得到以下錯誤:
llvm[2]: Linking Release executable llc (without symbols)
Undefined symbols:
"llvm::createABCDPass()", referenced from:
llvm::LLVMTargetMachine::addCommonCodeGenPasses(llvm::PassManagerBase&, llvm::CodeGenOpt::Level, bool, llvm::MCContext*&)in libLLVMCodeGen.a(LLVMTargetMachine.o)
ld: symbol(s) not found
collect2: ld returned 1 exit status
make[2]: *** [/Users/.../llvm/Release/bin/llc] Error 1
make[1]: *** [llc/.makeall] Error 2
make: *** [all] Error 1
有人知道我爲什麼會得到這個錯誤?謝謝!
然後,我決定徹底移除llc並找不到符號未找到錯誤仍然存在=( – 2011-04-20 22:44:59
@Esther,正如我所說的,您必須通過手將庫與您的通行證鏈接到llc。 – 2011-04-21 16:17:31