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



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

所以当我编译时,它编译得很好,这个命令没有错误

clang -L /build/root/usr/lib64/ -I /usr/include/ -Wall -o user u.c -lbpf

所以这些文件存在于我的/build/root/usr/lib64目录中

libbpf.a  libbpf.so  libbpf.so.0  libbpf.so.0.7.0  pkgconfig

但当我像一样运行程序时

sudo ./user

它抛出

./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/用户

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

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)

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

$ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/build/root/usr/lib64
$ export LD_LIBRARY_PATH

然后继续运行程序。注意,如果您使用sudo运行它,您可能还需要设置root的LD_LIBRARY_PATH

$ sudo su
# LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/build/root/usr/lib64
# export LD_LIBRARY_PATH
# ./user

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

相关内容

  • 没有找到相关文章

最新更新