llvm 学习笔记 2 : 添加 Pass 与调试

在学习LLVM时,在BackendUtil.cpp的EmitAssembly函数中添加自定义Pass时遇到错误。通过分析LibraryDependencies.inc文件,了解到该文件描述Makefile组件与库的对应关系。修正文件后成功编译,生成LLVMHello.a,并备份防止被覆盖。这个过程体现了高博关于科研要靠猜和推理的学习方法,对于自学和解决问题有很大启示。
摘要由CSDN通过智能技术生成

在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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值