Ubuntu 18.04构建BPF C编程环境

Ubuntu 18.04构建BPF C编程环境

1.下载内核源码
下载的内核版本与Ubuntu 18.04的内核版本一致。首先查看当前内核版本:uname -r

root@ubuntu:~# uname -r
5.4.0-65-generic

然后在内核源码镜像站点下载对应版本的内核源码包,解压在/usr/src目录下。

root@ubuntu:/usr/src# ls
linux-5.4

2.安装依赖

root@ubuntu:/usr/src/linux-5.4# apt install libncurses5-dev flex bison libelf-dev binutils-dev libssl-dev

3.安装Clang和LLVM

root@ubuntu:/usr/src/linux-5.4# apt install clang llvm

4.配置内核
在源码根目录下使用make defconfig生成.config文件,可以执行make menuconfig来可视化的查看内核配置选项。

root@ubuntu:/usr/src/linux-5.4# make defconfig

5.fixed modules error
修复modpost的报错,以下两种解决方案二选一:
方案一:

root@ubuntu:/usr/src/linux-5.4# make modules_prepare

因为直接make M=samples/bpf时,会报缺少modules的错误,解决方法来自这里。所以在编译前先构建好模块。

方案二:
补全脚本

root@ubuntu:/usr/src/linux-5.4# make scripts

6.关联内核头文件
在源码根目录下执行:

root@ubuntu:/usr/src/linux-5.4# make headers_install

7.编译内核BPF样例
在源代码根目录下执行make M=samples/bpf,在samples/bpf/文件夹中会看到生成了BPF的可执行文件。

root@ubuntu:/usr/src/linux-5.4# make M=samples/bpf

参考:

  • 深入浅出 eBPF
  • 编译运行Linux内核源码中的eBPF示例代码
  • UBUNTU下BPF纯C程序的编写与运行

你可能感兴趣的:(eBPF,eBPF)