首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用papi.h运行PAPI代码,错误:无法在GCC中打开共享对象文件

无法使用papi.h运行PAPI代码,错误:无法在GCC中打开共享对象文件
EN

Stack Overflow用户
提问于 2019-02-02 15:40:17
回答 1查看 561关注 0票数 0

我正在努力学习papi来监视各种CPU事件的性能。首先,我运行了PAPI官方文档提到的示例片段之一。下面是代码

代码语言:javascript
复制
#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;
}

我使用包含文件路径编译它,如下所示

代码语言:javascript
复制
gcc -I/home/sabarna/Desktop/DEV/clockCycle/papi/src/ papi_try1.c -L/home/sabarna/Desktop/DEV/clockCycle/papi/src/ -lpapi

在执行a.out时,我得到了错误

代码语言:javascript
复制
/a.out: error while loading shared libraries: libpapi.so.5: cannot open shared object file: No such file or directory

我试图通过导出LD_PRELOAD来修复这个问题,但是没有成功。有人能帮帮我吗?我以前从未使用过PAPI,所以我不确定我是否以正确的方式编译它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-02 15:50:27

没有理由预加载该库,请尝试定义/修改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>存在

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54494600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档