当前位置: 首页 > news >正文

基于 openEuler 22.03 LTS SP1 构建 DPDK 22.11.8 开发环境指南

基于 openEuler 22.03 LTS SP1 构建 DPDK 22.11.8 开发环境指南

本文详细介绍了在 openEuler 22.03 LTS SP1 操作系统上构建 DPDK 22.11.8 开发环境的完整流程。DPDK 20 版本之后采用 meson+ninja 的编译方式,与早期版本有所不同。本文内容也可作为其他 Linux 发行版构建 DPDK 环境的参考。

环境准备

安装编译依赖包

VERSION=$(uname -r)
sudo yum install -y gcc gcc-c++ make numactl-devel git tar kernel-devel-$VERSION

安装 Meson 构建工具

sudo pip3 install meson

安装 Pyelftools

sudo pip3 install pyelftools

安装 re2c

wget https://github.com/skvadrik/re2c/releases/download/1.0.3/re2c-1.0.3.tar.gz
tar -zxvf re2c-1.0.3.tar.gz
cd re2c-1.0.3/
./configure
make && sudo make install
cd ..

安装 Ninja 构建系统

wget https://github.com/ninja-build/ninja/archive/refs/tags/v1.11.0.tar.gz
tar -zxvf ninja-1.11.0.tar.gz
cd ninja-1.11.0/
python3 configure.py --bootstrap
sudo cp ninja /usr/bin/
cd ..

注意:如果系统没有 python 命令,只有 python3,请使用 python3 configure.py --bootstrap

在这里插入图片描述

DPDK 安装与配置

下载并解压 DPDK

wget http://fast.dpdk.org/rel/dpdk-22.11.8.tar.xz
tar -xvf dpdk-22.11.8.tar.xz
cd dpdk-stable-22.11.8

编译安装 DPDK

meson setup build
cd build
ninja
sudo ninja install  # 默认安装到 /usr/local/lib64
sudo ldconfig

可选:如需指定安装目录,可在 meson 步骤中添加 --prefix=/your/custom/path 参数。

环境变量配置

export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig
export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH

建议:将上述环境变量添加到 /etc/profile 文件中以实现永久生效。

驱动配置

加载vfio驱动

modprobe vfio enable_unsafe_noiommu_mode=1 # 在iommu不可用时,以非安全模式加载vfio
modprobe vfio-pci 
lsmod|grep vfio  # 检查是否成功

有关非安全模式加载vfio,也通过如下的方式修改:

echo 1 > /sys/module/vfio/parameters/enable_unsafe_noiommu_mode

关于vfio模块的加载,可以设置为开机自动加载,这样就不用每次手动加载了,具体方式如下:

# 配置 VFIO 内核模块的加载参数
sudo tee /etc/modprobe.d/vfio.conf <<EOF 
options vfio enable_unsafe_noiommu_mode=1
options vfio-pci disable_vga=1
EOF#系统启动时自动加载 vfio 内核模块。
echo "vfio" | sudo tee /etc/modules-load.d/vfio.conf
echo "vfio-pci" | sudo tee -a /etc/modules-load.d/vfio.conf

编译并加载igb_uio驱动

在dpdk22版本中,igb_uio不再被包含在dpdk源代码包中,如果需要则要额外编译安装。具体如下:

#下载
git clone http://dpdk.org/git/dpdk-kmods#编译
cd dpdk-kmods/linux/igb_uio
make#加载
modprobe uio
insmod igb_uio.ko intr_mode=legacy
depmod -a

同样的,igb_uio 也可以实现开机加载:

# 需要将编译出.ko 文件拷贝至如下的目录
cp dpdk-kmods/linux/igb_uioigb_uio.ko /lib/modules/$(uname -r)/kernel/drivers/uio/echo "options igb_uio intr_mode=legacy" | sudo tee /etc/modprobe.d/igb_uio.conf
echo "igb_uio" | sudo tee /etc/modules-load.d/igb_uio.conf

系统配置

配置大页

cd dpdk-stable-22.11.8
python3  ./usertools/dpdk-hugepages.py  -p 2M --setup 1G

绑定网卡到 VFIO 驱动

python3 ./usertools/dpdk-devbind.py --bind=vfio-pci 0000:02:01.0

测试验证

编译并运行 helloworld 示例

有两种编译方式,默认是共享库版本,还有一种静态库版本。

共享库:

cd helloworld
make
./build/helloworld

静态库版本

cd helloworld
make static
./build/helloworld

运行结果:

在这里插入图片描述

出现上述的结果,说明成功了。

总结

本文提供了在 openEuler 22.03 LTS SP1 上构建 DPDK 22.11.8 开发环境的完整指南,包括依赖安装、DPDK 编译、驱动配置和测试验证等步骤。按照本指南操作后,您将获得一个完整的 DPDK 开发环境,可用于后续的 DPDK 应用开发。
如果您咋配置过程中遇到了问题,欢迎评论区交流。谢谢!

http://www.lqws.cn/news/194617.html

相关文章:

  • 嵌入(Embedding)技术的实现原理与应用场景解析
  • 阿里开源千问3向量模型 超越Google与OpenAI
  • 六、【ESP32开发全栈指南:深入解析ESP32 IDF中的WiFi AP模式开发】
  • 数据结构与算法——并查集
  • DAX权威指南8:DAX引擎与存储优化
  • 【android bluetooth 协议分析 02】【bluetooth hal 层详解 8】【高通蓝牙hal-进程被杀之前日志收集流程】
  • Redis学习笔记
  • 面向开发者的提示词工程④——文本推断(Inferring)
  • AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年6月6日第100弹
  • 从入门到进阶:Python 学习参考书的深度解析
  • Google机器学习实践指南(机器学习模型泛化能力)
  • 信号(瞬时)频率求解与仿真实践(1)
  • Truffle 和 Ganache 使用指南
  • 使用Python和TensorFlow实现图像分类
  • 33 C 语言字符串转数值函数详解:atoi、atol、atoll、atof
  • KuiperInfer跟学第二课——张量的构建与实现
  • awk处理xml文件封装集合变量和调用
  • C++11 Move Constructors and Move Assignment Operators 从入门到精通
  • 【JJ斗地主-注册安全分析报告】
  • Pycharm中添加不了新建的Conda环境(此篇专门给Daidai写的)
  • 2025年全国青少年信息素养大赛 scratch图形化编程挑战赛 小高组初赛 真题详细解析
  • Ubuntu系统下交叉编译cJSON
  • 使用python把json数据追加进文件,然后每次读取时,读取第一行并删除
  • MySQL的优化部分介绍
  • MySQL体系架构解析(三):MySQL数据存储的揭秘
  • 第四讲:类和对象(下)
  • mamba架构和transformer区别
  • 导出pcap文件中的特定数据包
  • STM32外设问题总结
  • 六级作文--句型