XDP入门--之eBPF sample内核示例代码的编译

news2024/11/19 18:26:12

Linux内核代码提供了很多eBPF的示例代码(以linux6.1版本内核代码为例),我们可以在/Linux/samples/bpf目录下找到示例代码。

1、查看Linux内核版本

本文不讨论交叉编译的情况,因为eBPF还在快速发展中,不同版本的Linux内核的支持情况不太一至。所以第一步,我们需要通过uname命令查看本机的Linux内核版本号,以便下面几个步骤的开展。

pi@raspberrypi:/usr/src/linux-6.1/samples/bpf $ uname -a
Linux raspberrypi 6.1.21+ #1642 Mon Apr  3 17:19:14 BST 2023 armv6l GNU/Linux

2、下载linux内核代码

Linux内核代码托管在github里,我们可以通过左边的master这里下拉后,找到第1章里查询出来的当前linux内核对应版本的内核代码。如下图单击选择v6.1版本。
在这里插入图片描述然后在左边code这个下拉框里选择Download ZIP直接下载或者复制HTTPS那里的URL后通过git下载源代码到本地主机。
在这里插入图片描述

3、拷贝并安装源代码

这一步很简单,直接将下载下来的文件直接拷贝或者解压缩到/usr/src目录下则可。

pi@raspberrypi:~ $ sudo unzip ./linux-6.1.zip -d /usr/src/

解压完成后如下命令查看,如果看到有/usr/src/linux-6.1/samples目录,则说明内核源代码已经正确安装好。

pi@raspberrypi:~ $ cd /usr/src/linux-6.1/samples/
pi@raspberrypi:/usr/src/linux-6.1/samples $ ls -l | grep bpf
drwxr-xr-x 2 root root 4096 May 25 13:36 bpf

4、配置编译环境

sudo apt install make
sudo apt install clang
sudo apt install llvm
sudo apt install gcc
sudo apt install flex
sudo apt install bison
sudo make defconfig
sudo make headers_install
sudo make modules_prepare
sudo cp /sys/kernel/btf/vmlinux /usr/src/linux-5.19
sudo ln -s ./x86_64-linux-gnu/sys/ ./sys
sudo ln -s /usr/include/linux/capability.h /usr/include/sys/capability.h
sudo ln -s /usr/lib/x86_64-linux-gnu/libcap.so.2.44 /usr/lib/libcap.so
sudo ln -s /usr/src/linux-5.19/include/asm-generic/ /usr/src/linux-5.19/include/include/asm
sudo ln -s /usr/src/linux-5.19/samples/bpf/Module.symvers /usr/src/linux-5.19

5、编译

注意上面第4步的各个步骤都要做一下,否则会出现种头文件找不到,库文件找不到的错误。
然后运行以下命令后就可以把所有示例代码编译成功。

sudo make M=samples/bpf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/569040.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络安全就业有什么要求?一般人还真不行

前言 网络安全工程师又叫信息安全工程师。随着互联网发展和 IT 技术的普及,网络和 IT 已经日渐深入到日常生活和工作当中,社会信息化和信息网络化,突破了应用信息在时间和空间上的障碍,使信息的价值不断提高。但是与此同时&#…

接口自动化框架(Pytest+request+Allure)

前言: 接口自动化是指模拟程序接口层面的自动化,由于接口不易变更,维护成本更小,所以深受各大公司的喜爱。 接口自动化包含2个部分,功能性的接口自动化测试和并发接口自动化测试。 本次文章着重介绍第一种&#xff0c…

程序员职业病之中医颈椎痛缓解办法

✨求关注~ 😀博客:www.protaos.com 治疗颈椎病的穴位按摩是一种传统中医疗法,可以缓解颈椎病引起的疼痛和不适。下面是关于五个常用穴位的介绍、取穴定位、按摩方法和功效主治的总结: 人体穴位图 穴位图 1. 揉捏风池穴&#xf…

Linux 备份要点

文章目录 Linux 备份要点确定备份的目录和文件备份的种类、频率与工具的选择完整备份增量备份差异备份镜像备份 定期备份远程备份的脚本使用rsync上传备份数据 Linux 备份要点 在Linux系统中,备份数据是非常重要的,特别是在生产环境中。以下是Linux备份…

【数据结构】向上调整建堆和向下调整建堆的天壤之别以及堆排序算法

💯 博客内容:【数据结构】向上调整建堆和向下调整建堆的天壤之别以及堆排序算法 😀 作  者:陈大大陈 🚀 个人简介:一个正在努力学技术的准前端,专注基础和实战分享 ,欢迎私信&…

Hadoop HA(高可用)搭建

ZooKeeper配置 解压安装 添加ZK环境变量 分发文件 启动 安装配置 Hadoop 解压安装 修改hadoop-env.sh文件 修改Hadoop配置文件core-site.xml HDFS 配置文件hdfs-site.xml MapReduce 配置文件 mapred-site.xml YARN 配置文件yarn-site.xml 配置worekers 分发配…

Nginx配置文件

四.Nginx配置 1.位置 /usr/local/nginx/conf/nginx.conf2.内容 Nginx的主配置文件是nginx.conf,这个配置文件一共由三部分组成,分别为全局块、events块和http块。在http块中,又包含http全局块、多个server块。每个server块中,可…

基于3.0.0-cdh6.3.2版本编译Flink1.14.4

一、背景 异常描述 CDH-6.3.2环境下使用Flink-1.14.4的FlinkSQL的hive方言时出现如下异常 java.lang.Runtimelxception: java,lang.IllegalArgumentException: Unrecoonized Hadoop major version number: 3.0.0-cdh6.2.1 问题说明 开源社区hive 2.x的版本这种情况下是不支…

Java时间类(十一) -- Date类工具类 -- Java获取当天、本周、本月、本年 开始及结束时间

目录 1. 今天的日期如下: 2. DateUtils工具类的源代码: 3. 测试类 1. 今天的日期如下:

React Hooks useRef 源码解读+最佳实践

参考:https://juejin.cn/post/7027949526170206239 入口 下篇文章有入口源码详解,想看的可以跳转过去,这里就不放源码了,简单梳理一下流程吧 React Hooks useState 使用详解实现原理源码分析 流程 beginWork 判断组件类型&#x…

SpringCloud(26):系统自适应保护实现

Sentinel 系统自适应限流从整体维度对应用入口流量进行控制,结合应用的 Load、CPU 使用率、总体平均 RT、入口 QPS 和并发线程数等几个维度的监控指标,通过自适应的流控策略,让系统的入口流量和系统的负载达到一个平衡,让系统尽可…

ACP(MaxCompute篇)-MaxCompute自定义函数开发

概述 数据映射关系 自定义函数 相关资料 【MaxCompute】实现自定义UDF、UDTF详解_maxcompute 自定义函数_beautiful_huang的博客-CSDN博客 UDF UDTF UDAF 函数发布 test11_123>add jar C:\Users\zhang\Desktop\相关电子书\test\target\test-1.jar -f; OK: Resource tes…

Linux 分布式版本控制系统git

目录 什么是git? 安装git 创建版本库 工作区和版本库、 向版本库中添加文件 版本回退 远程操作 什么是git?  Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 linux是一个开源软件,第一版本&am…

【深入浅出Maven开发实战】「入门教程系列」带你零基础学习和开发使用Maven开发工具实战指南(实战技术总结)

Maven介绍 由于Java的生态非常丰富,无论你想实现什么功能,都能找到对应的工具类,这些工具类都是以jar包的形式出现的,例如Spring,SpringMVC、MyBatis、数据库驱动,等等,都是以jar包的形式出现的&#xff0…

华为OD机试之完美走位(Java源码)

完美走位 题目描述 在第一人称射击游戏中,玩家通过键盘的A、S、D、W四个按键控制游戏人物分别向左、向后、向右、向前进行移动,从而完成走位。 假设玩家每按动一次键盘,游戏任务会向某个方向移动一步,如果玩家在操作一定次数的键…

Eureka 心跳和服务续约源码探秘——图解、源码级解析

🍊 Java学习:社区快速通道 🍊 深入浅出RocketMQ设计思想:深入浅出RocketMQ设计思想 🍊 绝对不一样的职场干货:大厂最佳实践经验指南 📆 最近更新:2023年5月25日 🍊 点…

【SA8295P 源码分析】03 - SA8295P QNX Host 上电开机流程分析

【SA8295P 源码分析】03 - SA8295P QNX Host上电开机流程分析 一、阶段1 固件开机自检 (SM BIST):APPS PBL加载XBL后触发 INT_RESET进行Warm Reset二、阶段2 固件开机自检 (SM BIST):加载TZ,初始Hypervisor,启动QNX Kernel,加载并启动各子系统系列文章汇总见:《【SA8295P…

如何用前端技术打造自己的2048游戏

部分数据来源:ChatGPT 2048游戏规则 2048是一款数字益智类游戏,玩家需要通过合并数字方块来获得更高的分数。游戏的规则非常简单,只需要使用上下左右方向键移动数字方块,当两个相同数字方块碰撞时,会合并成一个数字方…

【KVM虚拟化】· KVM中的网络

目录 🍎虚拟机的网络模式 🍒网络配置文件 🍒virsh查看命令 🍎基于NAT的虚拟网络 🍎基于网桥的虚拟网络 🍎基于隔离的虚拟网络 🦐博客主页:大虾好吃吗的博客 🦐专栏地址&a…

全网最全的多模态实体识别论文列表-【原文+代码】

文章目录 写在前面的话【2017年】【2018年】【2019年】【2020年】【2021年】【2022年】【2023年】【写在最后的话】 写在前面的话 近期在梳理多模态NER相关的论文,因此,本篇文章主要是为大家整理了比较全面的聚焦于多模态实体识别任务的论文列表&#x…