Не удается запустить код PAPI с papi.h, ошибка: невозможно открыть общий объектный файл в GCC - PullRequest
0 голосов
/ 02 февраля 2019

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

#include<stdio.h>
#include <unistd.h>
#include "papi.h"

#define NUM_EVENTS 2
int main()
{
int Events[NUM_EVENTS] = {PAPI_TOT_INS, PAPI_TOT_CYC};
int num1=1234;
int num2=9876;
int res1,res2;
long_long values[NUM_EVENTS];
/* Start counting events */
if (PAPI_start_counters(Events, NUM_EVENTS) != PAPI_OK)
    printf("\nerror!!!\n");
    //handle_error(1);
/* Do some computation here*/

res1=num1*num2;
printf("\n%d",res1);
/* Read the counters */
if (PAPI_read_counters(values, NUM_EVENTS) != PAPI_OK)
    printf("\nerror!!!\n");
/* Do some computation here */

res2=num1+num2;
printf("\n%d",res2);
/* Stop counting events */
if (PAPI_stop_counters(values, NUM_EVENTS) != PAPI_OK)
    printf("\nerror!!!\n");
 return 0;
}

Я скомпилировал его с путем включаемых файлов, как показано ниже

gcc -I/home/sabarna/Desktop/DEV/clockCycle/papi/src/ papi_try1.c -L/home/sabarna/Desktop/DEV/clockCycle/papi/src/ -lpapi

При выполнении a.out я получаю сообщение об ошибке

/a.out: error while loading shared libraries: libpapi.so.5: cannot open shared object file: No such file or directory

Я попытался исправить это, экспортировав LD_PRELOAD, но это не сработало.Может ли кто-нибудь помочь мне?Я никогда раньше не использовал PAPI api, поэтому не уверен, правильно ли я его компилирую.

1 Ответ

0 голосов
/ 02 февраля 2019

Нет причин для предварительной загрузки этой библиотеки, попробуйте определить / изменить LD_LIBRARY_PATH, а не LD_PRELOAD


-L/home/sabarna/Desktop/DEV/clockCycle/papi/src/, похоже, указывает на то, что вы скомпилировали, но не установили ее

если вы установите LD_xxx с /home/sabarna/Desktop/DEV/clockCycle/papi/src/, это означает, что библиотека должна находиться в каталоге /home/sabarna/Desktop/DEV/clockCycle/papi/src/, а не в другом месте, поэтому /home/sabarna/Desktop/DEV/clockCycle/papi/src/libpapy.so и / или /home/sabarna/Desktop/DEV/clockCycle/papi/src/libpapy.so.<number> существуют

...