我目前正在尝试从这里运行 AF_XDP-Tutorial:https ://github.com/xdp-project/xdp-tutorial/tree/master/advanced03-AF_XDP
我能够编译它,但如果我尝试通过以下方式将 xdp 代码放入内核:
sudo ./af_xdp_user --dev veth-basic02 --force
我收到此错误:
ERROR: Can't setup AF_XDP socket "Operation not permitted"
然后我检查了内核标志
CONFIG_BPF=y
CONFIG_BPF_SYSCALL=y
CONFIG_XDP_SOCKETS=y
/boot/config-4.18.0-25-generic
他们都在那里。
因此,下一步,我尝试不使用存储库libbpf
中的 -submodule编译程序xdp-tutorial
,而是使用此处的最新版本:https ://github.com/libbpf/libbpf/tree/master/src
但是现在,如果我尝试编译程序,我会得到以下输出:
cc -Wall -I../libbpf/src/build/usr/include/ -g -I../headers/ -L../libbpf/src -o af_xdp_user ../common/common_libbpf.o ../common /common_params.o ../common/common_user_bpf_xdp.o \af_xdp_user.c -l:libbpf.a -lelf -lpthread /usr/bin/ld: ../libbpf/src/libbpf.a(libbpf.o): 未定义引用符号 'gzopen64@@ZLIB_1.2.3.3' /usr/bin/ld: //lib/x86_64-linux-gnu/libz.so.1: 添加符号时出错:命令行中缺少 DSO
有谁能帮忙吗?
编辑:
输出sudo strace ./af_xdp_user --dev veth-basic02 --force
:
Edit_2:自从创建这篇文章以来,我升级到内核5.3.0-28
- 但不幸的是没有任何改变