我正在一个项目中,我需要使用clang仅生成位代码,使用opt运行一些优化过程,然后创建可执行文件并测量其硬件计数器。

我可以直接使用clang链接:

clang -g -O0 -w -I/opt/apps/papi/5.3.0/include -Wl,-rpath,$PAPI_LIB -L$PAPI_LIB \
    -lpapi /scratch/02681/user/papi_helper.c prog.c -o a.out

但是现在我想在使用clang的前端并使用opt应用优化通道之后将其链接。

我正在尝试以下方式:
clang -g -O0 -w -c -emit-llvm -I/opt/apps/papi/5.3.0/include -Wl,-rpath,$PAPI_LIB -L$PAPI_LIB \
    -lpapi /scratch/02681/user/papi_helper.c prog.c -o prog.o

llvm-link prog.o papi_helper.o -o prog-link.o

// run optimization passes
opt -licm prog-link.o -o prog-opt.o

llc -filetype=obj prog-opt.o -o prog-exec.o

clang prog-exec.o

经过上述过程后,我得到以下错误:
undefined reference to `PAPI_event_code_to_name'

它无法解析papi函数。在此先感谢您的帮助。

最佳答案

显然,您需要在最后一个clang调用中添加-lpapi。链接器还如何知道libpapi?

关于c++ - 无法将PAPI库与opt llvm链接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23585663/

10-12 19:17