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

2024-02-16 19:30

本文主要是介绍XDP入门--之eBPF sample内核示例代码的编译,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

这篇关于XDP入门--之eBPF sample内核示例代码的编译的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/715480

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

内核启动时减少log的方式

内核引导选项 内核引导选项大体上可以分为两类:一类与设备无关、另一类与设备有关。与设备有关的引导选项多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导选项。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导选项,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导选项说明。大多数选项是通过"_

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

poj 2104 and hdu 2665 划分树模板入门题

题意: 给一个数组n(1e5)个数,给一个范围(fr, to, k),求这个范围中第k大的数。 解析: 划分树入门。 bing神的模板。 坑爹的地方是把-l 看成了-1........ 一直re。 代码: poj 2104: #include <iostream>#include <cstdio>#include <cstdlib>#include <al

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能