我正在做一个项目,我需要使用 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 函数。提前感谢您的帮助。