2014-05-10 3 views
2

Я работаю над проектом, где мне нужно генерировать только биткод, используя clang, запускать некоторые проходы оптимизации с помощью opt, а затем создавать исполняемый файл и измерять его счетчики аппаратных средств.Невозможно связать библиотеку PAPI с opt llvm

Я могу связать через лязг непосредственно с помощью:

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 -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 функции. Заранее благодарю за любую помощь.

ответ

1

Очевидно, вам нужно добавить -lpapi к последнему вызову clang. Как еще линкер узнает о libpapi?

Смежные вопросы