我试图用Linux源代码编译示例bpf程序。所以我下载了当前的内核源代码并输入了samples/bpf文件夹。
apt source linux
cd linux-*/samples/bpf然后我试着用gcc编写了一个示例程序:
# gcc sock_example.c
sock_example.c:29:10: fatal error: bpf/bpf.h: No such file or directory
29 | #include <bpf/bpf.h>
| ^~~~~~~~~~~
compilation terminated.我找不到bpf/bpf.h和apt-file
# apt-file find bpf/bpf.h
(no output)出什么问题了?
发布于 2021-11-01 09:59:28
Linux eBPF示例附带了一个相当长的Makefile。它处理了大量的实例,并与内核构建工作流进行了很好的集成,但使得在内核树之外构建样本变得更加复杂。
例如,这个Makefile添加了许多包含目录,比如TPROGS_CFLAGS += -I$(srctree)/tools/lib/,这意味着bpf/bpf.h不会从操作系统库中获取,而是从内核存储库下的tools/lib/中获取。
在编译程序时,可以考虑以下几个选项:
tprogs-y目标中。sudo make -C tools/lib/bpf install)或其GitHub反射镜安装libbpf。这应该安装头部,gcc应该能够找到它们。gcc -I <path/to/linux>/tools/lib)。#include <bpf/bpf.h>中的包含路径,使其指向库。)发布于 2021-11-01 09:58:52
您需要安装利伯普夫
git clone --depth 1 https://github.com/libbpf/libbpf
cd src
sudo make installhttps://stackoverflow.com/questions/69792748
复制相似问题