使用cilium/ebpf开发Android eBPF程序

最近捣鼓了一下在PC上开发Android的eBPF程序,最开始想用libbpf+bpftool,但是发现bpftool只支持linux,虽然生成skel.h头文件的功能是平台无关的,只是读取和解析文件而已。自己尝试一直了一下gen命令的代码,发现比较麻烦就放弃了,但因为平时主要用的还是Win和mac系统,总是切虚拟机里用linux太烦了,就找了下有没有别的方法,于是就有了写篇文章。流水账记录一下,有疏漏欢迎指正。
最开始测试cilium/ebpf框架的时候,bpf2go命令是不支持win的,但是稍微改一下就可以了,于是就改了一下并给cilium/ebpf提了个pr,目前已经合并进去了。
代码修改自cilium/ebpf的example:ringbuf
测试编译环境:

  1. Windows 10 + MSYS2 MinGW64 + Go 1.19
  2. macOS 13.0.1
    Linux就不测试了,跟mac一样本来就可以,懒得搞了。

后来非虫大佬告诉我说libbpf-bootstrap用xmake可以交叉编译到android上,不过似乎没有生成skel.h,不知道是怎么做到的,有空得看看。
另外rust aya也支持在linux和mac上编译到android,win上不行,大概看了一眼,应该是用了标准库中unix命名空间下的东西,不知道能不能也修改一下支持win,有时间得试试。


使用cilium/ebpf开发Android eBPF程序
https://xing.re/2022/12/21/使用cilium-ebpf开发Android-eBPF程序/
作者
网事如风
发布于
2022年12月21日
许可协议