5

我正在 Ubuntu 机器上开发一个 eBPF 程序:

$ uname -a
Linux ubuntu-bionic 4.18.0-16-generic #17~18.04.1-Ubuntu SMP Tue Feb 12 13:35:51 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

为此,我需要bpf.h许多定义以及bpf_helpers.h辅助函数定义。我安装了一个带有标题的新内核:

apt-get update -y
apt-get install -y linux-image-4.18.0-16-generic linux-headers-4.18.0-16-generic

标题包括bpf.h

$ find /usr/src/linux-headers-4.18.0-16 -name bpf.h
/usr/src/linux-headers-4.18.0-16/include/uapi/linux/bpf.h
/usr/src/linux-headers-4.18.0-16/include/linux/bpf.h

但不是bpf_helpers.h

$ find /usr/src/linux-headers-4.18.0-16 -name bpf_helpers.h

如何为我的内核获取此文件,为什么它不包含在分发标头中?

我可以签出特定版本的 Linux 内核或从master获取文件,但发行版可能会对上游进行更改,这让我对此感到不舒服。

4

2 回答 2

3

bpf_helpers.h与内核头文件一起分发,而是与 libbpf 一起分发。

你可以在 Ubuntu 上安装 libbpf:

apt install libbpf-dev

或者您可以从https://github.com/libbpf/libbpf的源代码安装它。

于 2019-03-31T07:12:05.720 回答
2

在 Ubuntu 上,我安装了 libbpf-dev 以获取该标头:

sudo apt-get install libbpf-dev
$ apt-file list libbpf-dev | grep bpf_helpers.h
libbpf-dev: /usr/include/bpf/bpf_helpers.h
于 2021-10-25T02:47:22.050 回答