【问题标题】:eBPF / XDP fails to compile on Ubuntu 16.04.6eBPF / XDP 无法在 Ubuntu 16.04.6 上编译
【发布时间】:2019-05-27 14:07:23
【问题描述】:

升级 Ubuntu 16.04 后,无法再编译 eBPF。 bpf.h 文件缺少关键结构,并且似乎没有安装 uapi 标头。

示例代码:

#include <linux/bpf.h>

int main()
{
    return XDP_DROP;
}

clang -target bpf -O2 -c xdp.c -o xdp.o编译

这会返回错误:

udp.c:13:12: error: use of undeclared identifier 'XDP_DROP'
    return XDP_DROP;
           ^
1 error generated.
$ cat /etc/*release*
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.6 LTS"
NAME="Ubuntu"
VERSION="16.04.6 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.6 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial
$ uname -r
4.4.0-148-generic

没有提到 XDP

$ grep -r XDP_DROP /usr/include
$ grep -r XDP_DROP /lib/modules/
$

有什么问题?

【问题讨论】:

  • grep -r XDP_DROP /usr/includeapt search xdpapt search bpf 怎么说?
  • 请把输出放在问题中,以便我们阅读。

标签: ubuntu ebpf


【解决方案1】:

您的内核是 4.4.0-148,这太旧了,无法支持 XDP。 XDP 是在 Linux 4.8 中引入的(参见 this document)。

不确定您从哪个系统升级。如果可以,请尝试升级到 Ubuntu 18.04?或者尝试安装更新的内核(和相关的头文件)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 2016-10-25
    • 2020-08-10
    • 2015-01-20
    • 2013-07-18
    • 2021-08-06
    相关资源
    最近更新 更多