解构内核源码eBPF样例编译过程
的ebpf编译和使用,有助于我们加深对于eBPF技术原理的进一步掌握,也有助于开发符合自己业务需求的高性能的ebpf程序。 目前常见和主流的纯c语言的ebpf编译使用方法,主要是两种。一种是内核源码中原生提供的编译方式。另外一种是libbpf-bootstrap项目中提供的skeleton编译方式。libbpf-bootstrap方式和社区5.x以上内核结合的比较好,以后再做介绍,今天我们选择基于4.18内核的基于内核源码的原生编译方式做介绍。
我们今天将参考这篇文章内容,对基于内核源码方式的纯c语言的ebpf编译方式做进一步分析。
目前主流的服务器的操作系统环境还是以8u + 4.18内核为主。因此,本文以4.18版本内核为主要分析对象。我们提供如下操作系统环境的获取建议:
如果你自己有centos8u兼容环境操作系统,则可以使用已有的环境。如果没有,可以通过阿里云官网购买阿里云主机,选择选择centos8或者anolis8操作系统环境。
狄老师的文章中这里执行的是make scripts,在内核源码编译时此步骤前通常还需要执行make prepare。而make init正好包含这两步make prepare && make scripts。因此,我们将命令按照如下方式优化,基本能够一遍跑过:
我们可以通过对样例程序的执行,对编译效果进行验证。结果显示执行成功,狄老师文章中的步骤验证通过,有点小激动。
接下去就是本文最重点的部分,对ebpf编译过程的分析。我们主要分分析headers_install和对samples/bpf目录的make这2个步骤。
重新获取一个干净的内核源码,再次执行上面的编译步骤。这次我们对编译过程增加一些观察步骤。
ebpf样例的编译过程,我们做一下改进,通过SHELL选项打开shell的调试选项。具体命令如下:
通过上一节对关键步骤make M=samples/bpf的实践,我们已经可以编译出内核源码中提供的ebpf样例。但这还不够我们充分地理解这个编译过程,我们将这编译过程继续拆解一下,拆解成可以一步步执行的那种,为了方便大家理解,我将这个过程分解为 A-H 6大手工步骤,里面还会包含一些细分的小步骤:
● 第三组是-I./tools/testing/selftests/bpf/。之所以把这一组单独独立出来,是因为它和样例代码处于同样的路径。
● libbpf.a表示以静态链接库的方式链接libbpf的类库。 ● 最关键的是,没有添加-static选项,没有添加-static选项,没有添加-static选项,重要的事情说三遍。
● llc是llvm的连接器。内核是将clang的编译和llc的链接独立成两步完成,在llc步骤才指定-march=bpf。 对编译结果进行验证,完美验证通过,第二次有点小激动。
按照内核的原生步骤,对4.9内核进行一次编译,我们会发现对应手工步骤E的这一步,编译代码有点不一样,具体代码如下。
本文为eBPF动手实践系列的第一篇,我们实现了基于内核源码框架的一步一步的纯C语言编译球速体育
上一篇:马涛:助力应用生态文更好发展 推动中国操作系统产业进步
栏 目:CentOS
下一篇:AnolisOS 82首发100%兼容CentOS支持国际主流Linux厂商
本文标题:解构内核源码eBPF样例编译过程
本文地址:http://aihaoedu.com/fuwuqijiaocheng/1817.html
您可能感兴趣的文章
- 10-26Acrel-3000WEB标准版
- 10-26【蓝因子教育】部署你的Python项目Python-Jack-Jack
- 10-26CentOS 60正式版终于发布 附下载地址
- 10-26Windows 11安装过程中如何禁用默认的BitLocker加密?
- 10-26【推荐收藏】2024年5款最佳 GPU 渲染引擎大盘点
- 10-23Rocky Linux 是否能替代CentOS
- 10-23时代的欧拉还是欧拉的时代?
- 10-23拒绝CentOS停更焦虑躺平式“平替”是哪家?
- 10-23CentOS 9 中文正式版下载 - 流行稳定的免费企业级 Linux 服务器操作系统
- 10-23Centos70下载 中文正式版(附安装教程)
阅读排行
推荐教程
- 08-04SJTUG下架Docker Hub镜像
- 08-30CentOS创始人开辟新项目Rocky Linux并火速上线官网
- 08-21VMware vSphere Foundation从应用程序到存储的智能操作
- 06-29CentOS 75 正式发布 基于 RHEL 的安全稳定发行版
- 08-04选择更多:优麒麟新增上海交大等四大镜像站
- 08-08一站式采购!麒麟信安 CentOS 安全加固套件上架华为云云商店
- 09-03VMware Fusion 12全新特性让虚拟机变得更好
- 08-07统一操作系统UOS官网正式上线:自带全家桶、可替代Windows
- 08-08北京理工大学学术网
- 08-25CentOS Linux 7 生命周期今日正式结束不会获得更新和安全补丁