因此,在我的用户空间程序中,我调用了一些函数,比如bpf_object__open_file,它们是安装在PKG_CONFIG_PATH=/build/root/lib64/pkgconfig DESTDIR=/build/root make install中的libbpf库的一部分。
所以,当我编译it编译的时候,这个命令没有错误。
clang -L /build/root/usr/lib64/ -I /usr/include/ -Wall -o user u.c -lbpf因此,这些文件存在于我的/build/root/usr/lib64 64目录中。
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 ./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)发布于 2022-01-13 14:22:12
应该将libbpf库目录添加到LD_LIBRARY_PATH变量中。
$ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/build/root/usr/lib64
$ export LD_LIBRARY_PATH那就继续运行这个程序。请注意,如果您使用sudo运行它,您可能还需要设置根的LD_LIBRARY_PATH
$ sudo su
# LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/build/root/usr/lib64
# export LD_LIBRARY_PATH
# ./user您可以验证使用相同的ldd命令找到libbfp。
https://stackoverflow.com/questions/70696552
复制相似问题