man bpf
指出
在内核源代码树的 samples/bpf 目录中可以找到一些完整的工作代码。
但是我在该位置找不到任何样本:
$ uname -r
5.1.11-200.fc29.x86_64
$ ls /usr/src/kernels/5.1.11-200.fc29.x86_64/samples/bpf
Makefile
sudo make
似乎由于其他原因而出错,但是看起来预计( )Makefile
中存在样本:samples/bpf
BPF_SAMPLES_PATH
$ cd /usr/src/kernels/5.1.11-200.fc29.x86_64/
$ sudo make headers_install
$ sudo make samples/bpf/
HOSTCC scripts/selinux/genheaders/genheaders
scripts/selinux/genheaders/genheaders.c:18:10: fatal error: classmap.h: No such file or directory
#include "classmap.h"
^~~~~~~~~~~~
compilation terminated.
make[3]: *** [scripts/Makefile.host:92: scripts/selinux/genheaders/genheaders] Error 1
make[2]: *** [scripts/Makefile.build:486: scripts/selinux/genheaders] Error 2
make[1]: *** [scripts/Makefile.build:486: scripts/selinux] Error 2
make: *** [Makefile:1069: scripts] Error 2
还,远程 Linux 内核仓库包含一个带有示例的 README 文件。
Fedora Linux 内核目录中是否有 BPF 示例?如果有,它们位于哪里?
答案1
您需要安装 LLVM 包来将示例程序编译为字节码,该字节码将由内核虚拟机执行。
还应该安装内核头文件。