【发布时间】:2011-04-20 19:56:10
【问题描述】:
我已经在llvm/lib/Transforms 中写入了我的通行证,它的名称为createABCDPass。我在我的通行证中添加了以下代码:
namespace llvm { FunctionPass *createABCDPass(); }
FunctionPass *llvm::createABCDPass() { return new AbcRemoval(); }
其中AbcRemoval 是通行证的类别。
之后,我在lib/CodeGen/LLVMTargetMachine.cpp做了一个前向声明,以便识别我的通行证:
namespace llvm { FunctionPass *createABCDPass(); }
PM.add(createABCDPass());
但是,当我在 llvm 上运行 make 时,出现以下错误:
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
有人知道我为什么会收到这个错误吗?谢谢!
【问题讨论】:
标签: llvm compiler-optimization