在BackendUtil.cpp 的 void EmitAssemblyHelper::EmitAssembly 函数中, if (PerFunctionPasses) 条件后 new 了自带的 Hello pass. 重新 make 时发生以下错误
make[4]: Entering directory '/home/nightwish/code/GIT/llvm/release/tools/clang/tools/driver'
llvm[4]: Linking Release+Asserts executable clang (without symbols)
/home/nightwish/code/GIT/llvm/release/Release+Asserts/lib/libclangCodeGen.a(BackendUtil.o): In function `clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::Module*, clang::BackendAction, llvm::raw_ostream*)':
BackendUtil.cpp:(.text+0x1318): undefined reference to `Hello::Hello()'
collect2: error: ld returned 1 exit status
请教高博之后学长告诉我这是linking时错误,编译是通过了的.问题发生在静态链接时没有这个hello符号.动态链接会生成 .so , 而静态链接生成的是 .a ( a 是什么的缩写?)
错误发生在
llvm/release/tool