首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法打开共享对象文件:没有这样的文件或目录,包括带有用户空间程序的libbpf

无法打开共享对象文件:没有这样的文件或目录,包括带有用户空间程序的libbpf
EN

Stack Overflow用户
提问于 2022-01-13 12:22:07
回答 1查看 3.2K关注 0票数 0

因此,在我的用户空间程序中,我调用了一些函数,比如bpf_object__open_file,它们是安装在PKG_CONFIG_PATH=/build/root/lib64/pkgconfig DESTDIR=/build/root make install中的libbpf库的一部分。

所以,当我编译it编译的时候,这个命令没有错误。

代码语言:javascript
复制
  clang -L /build/root/usr/lib64/ -I /usr/include/ -Wall -o user u.c -lbpf

因此,这些文件存在于我的/build/root/usr/lib64 64目录中。

代码语言:javascript
复制
    libbpf.a  libbpf.so  libbpf.so.0  libbpf.so.0.7.0  pkgconfig

但是当我运行这个程序的时候

代码语言:javascript
复制
 sudo ./user

它发出的信息是

代码语言:javascript
复制
 ./user: error while loading shared libraries: libbpf.so.0: cannot open shared object file: No such file or directory

所以基本上我是在创建共享库,给出路径,但是为什么运行程序无法找到我的libbpf.so.0共享库

有人能告诉我为什么我收到的信息找不到库

正如Qeole在评论中提到的

所以我做了这个

root@/dir/# ldd ./user

它给了我这个输出,没有任何位置,它试图在哪里找到路径目录?

代码语言:javascript
复制
linux-vdso.so.1 (0x00007ffcd77e7000)
libbpf.so.0 => not found
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9b3943c000)
/lib64/ld-linux-x86-64.so.2 (0x00007f9b39642000)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-13 14:22:12

应该将libbpf库目录添加到LD_LIBRARY_PATH变量中。

代码语言:javascript
复制
$ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/build/root/usr/lib64
$ export LD_LIBRARY_PATH

那就继续运行这个程序。请注意,如果您使用sudo运行它,您可能还需要设置根的LD_LIBRARY_PATH

代码语言:javascript
复制
$ sudo su
# LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/build/root/usr/lib64
# export LD_LIBRARY_PATH
# ./user

您可以验证使用相同的ldd命令找到libbfp。

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

https://stackoverflow.com/questions/70696552

复制
相关文章

相似问题

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