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

cannot open shared object file: No such file or directory | including libbpf with userspace program

所以在我的用户空间程序中,我调用了一些函数,例如 bpf_object__open_file,它们是 libbpf 库的一部分,与 PKG_CONFIG_PATH=/build/root/lib64/pkgconfig DESTDIR=/build/root make install

一起安装

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

  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

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

谁能告诉我为什么我收到的消息找不到库

正如评论中提到的 Qeole

所以我这样做了

root@/dir/# ldd ./user

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

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。