首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法编译示例bpf程序,缺少bpf/bpf.h

无法编译示例bpf程序,缺少bpf/bpf.h
EN

Stack Overflow用户
提问于 2021-11-01 04:53:10
回答 2查看 2.7K关注 0票数 3

我试图用Linux源代码编译示例bpf程序。所以我下载了当前的内核源代码并输入了samples/bpf文件夹。

代码语言:javascript
复制
apt source linux
cd linux-*/samples/bpf

然后我试着用gcc编写了一个示例程序:

代码语言:javascript
复制
# 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.hapt-file

代码语言:javascript
复制
# apt-file find bpf/bpf.h
(no output)

出什么问题了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-11-01 09:59:28

Linux eBPF示例附带了一个相当长的Makefile。它处理了大量的实例,并与内核构建工作流进行了很好的集成,但使得在内核树之外构建样本变得更加复杂。

例如,这个Makefile添加了许多包含目录,比如TPROGS_CFLAGS += -I$(srctree)/tools/lib/,这意味着bpf/bpf.h不会从操作系统库中获取,而是从内核存储库下的tools/lib/中获取。

在编译程序时,可以考虑以下几个选项:

  • 调整现有的Makefile以使用它构建自己的程序,例如将内核代码添加到tprogs-y目标中。
  • 从内核回购(sudo make -C tools/lib/bpf install)或其GitHub反射镜安装libbpf。这应该安装头部,gcc应该能够找到它们。
  • 调整编译选项,告诉gcc在哪里查找标头(gcc -I <path/to/linux>/tools/lib)。
  • (调整#include <bpf/bpf.h>中的包含路径,使其指向库。)
票数 3
EN

Stack Overflow用户

发布于 2021-11-01 09:58:52

您需要安装利伯普夫

代码语言:javascript
复制
git clone --depth 1 https://github.com/libbpf/libbpf
cd src
sudo make install
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69792748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档