我正在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获取该文件,但发行版可能已经对上游进行了更改,这让我不习惯这样做。
发布于 2019-03-31 15:12:06
bpf_helpers.h
是not distributed with the kernel headers。正如agg3l在评论中建议的那样,您可以从Ubuntu's linux-source package复制它。
发布于 2021-10-25 02:47:22
在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
https://stackoverflow.com/questions/55436213
复制相似问题