编译Linux内核BPF示例程序提示找不到bpf/bpf.h头文件如何解决
问题原因
<bpf/bpf.h>不属于Linux内核源码自带的头文件,是用户态libbpf库提供的开发头文件,内核samples/bpf目录下的示例程序默认依赖该库的头文件和动态链接库,未安装对应开发包就会触发头文件找不到的报错。- apt-file无搜索结果是因为你没有更新apt-file的本地索引,或是系统未安装libbpf对应的开发包。
解决步骤
- 先更新软件源和apt-file索引:
sudo apt update && sudo apt-file update
- 安装libbpf开发包:
Debian/Ubuntu 20.04及以上版本直接执行即可:
sudo apt install libbpf-dev
安装完成后再执行apt-file find bpf/bpf.h就能看到对应的文件路径。
如果你的系统版本较低,源内没有提供libbpf-dev包,可以直接从你下载的内核源码中编译安装libbpf:
cd ../../tools/lib/bpf make && sudo make install
- 修正编译命令
不能直接用gcc编译单文件,需要链接libbpf库,同时指定内核源码的头文件路径,在samples/bpf目录下执行以下命令即可完成编译:
gcc sock_example.c -o sock_example -lbpf -I/usr/include -I../../include
内容的提问来源于stack exchange,提问作者daisy
相关产品推荐
相关产品推荐

