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

news2024/10/5 10:39:02

       环境:
       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.coloradmin.cn/o/1866799.html

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

相关文章

小程序 UI 风格,引人入胜

小程序 UI 风格,引人入胜

OceanBase 4.X-2F1A 仲裁高可用方案初探

作者:郑增权,爱可生 DBA 团队成员,OceanBase 和 MySQL 数据库技术爱好者。 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 本文约 1500 字,预计阅读需要 5 分钟。 背景 对…

10个国内免费AI绘画网站汇总【2024最新】

迎战MidJourney和Stable Diffusion:10款国产AI绘画神器,让你轻松创作出超凡艺术品!不论你是初学者还是资深艺术家,这些AI绘画平台都能帮你轻松入门。快来探索这些AI绘画网站,释放你的创意潜能! 1、AI绘画创…

Linux系统之nice命令的基本使用

Linux系统之nice命令的基本使用 一、nice命令介绍1.1 nice命令简介1.2 进程优先级介绍 二、nice命令基本语法2.1 nice命令的help帮助信息2.2 nice命令选项解释 三、nice命令的基本使用3.1 查看进程优先级3.2 使用nice启动进程3.3 提高优先级 四、注意事项 一、nice命令介绍 1.…

YCSB基准测试

1、Redis: 下载成功后,加载数据,运行 启动redis: /usr/local/redis/bin/redis-server ./bin/ycsb load redis -P workloads/workloade -p redis.hostlocalhost -p redis.port6379 -p recordcount10000 -p operationcount10000 -threads 32 ./bin/y…

Vue3-尚硅谷笔记

1. Vue3简介 2020年9月18日,Vue.js发布版3.0版本,代号:One Piece(n 经历了:4800次提交、40个RFC、600次PR、300贡献者 官方发版地址:Release v3.0.0 One Piece vuejs/core 截止2023年10月,最…

简述RocketMQ从了解到使用

概念篇 背景: 随着队列和虚拟主题使用的增加,ActiveMQ IO模块达到了一个瓶颈。我们尽力通过节流、断路器或降级来解决这个问题,但效果并不理想。于是我们尝试了流行的消息传递解决方案Kafka。不幸的是,Kafka不能满足我们的要求,其尤其表现在低延迟和高可靠性方面,详见下…

后端之路第三站(Mybatis)——入门配置

一、Mybatis是啥? 就是一个用java来操控数据库的框架语言 之前学的datagrip或者navicat这些软件里我们操作数据库,原理是我们编写完的操作语句发送到服务器传送到数据库系统,然后数据库执行完之后再发送给服务器返回给datagrip或者navicat显…

服务器数据恢复—用raid6阵列磁盘组建raid5阵列如何恢复原raid数据?

服务器存储数据恢复环境: 华为OceanStor 5800存储,该存储中有一组由10块硬盘组建的raid6磁盘阵列,供企业内部使用,服务器安装linux操作系统EXT3文件系统,划分2个lun。 服务器存储故障: 管理员发现存储中rai…

多家国产大模型提供OpenAI API服务替代方案,谷歌将推出明星网红AI聊天机器人

ChatGPT狂飙160天,世界已经不是之前的样子。 更多资源欢迎关注 1、OpenAI终止对中国提供服务 6月25日凌晨,多个用户收到OpenAI的推送邮件,信中称,自今年7月9日起,将开始阻止来自非支持国家和地区的API(应…

pythons工具——裁剪labelme的json不规则多边形标签保存成矩形图像

原图labelme标注 使用以下程序,裁剪labelme的json不规则多边形标签保存成矩形图像 import os import cv2 import math import json import numpy as np from PIL import Image, ImageDrawdef calculate_bounding_box(points):"""计算多边形的最小外…

高校心理咨询管理系统

摘 要 随着高校学生心理问题的增多,心理咨询服务在高校中的重要性日益凸显。然而,传统的心理咨询管理方式存在着诸多问题,如信息不透明、咨询师资源不足等。为了解决这些问题,本文设计并实现了一种基于Java Web的高校心理咨询管理…

Java Stream API揭秘:掌握List流操作,打造高效数据处理流程

序言 Java Stream API是Java 8中引入的一个非常重要的功能组成部分,它提供了一种声明式的处理数据集合的方法。它主要特点是基于函数式编程的理念,允许我们以更加简洁、高效的方式进行集合的处理、转换和过滤。通过Stream API,我们可以灵活地…

Animate软件为什么默认只能导出mov格式视频?

很多同学在学习Animate软件的时候,经常会有一个问题,就是制作好动画导出视频时,只能选择mov格式,而且导出文件特别大,为什么Animate软件默认只能导出mov格式的视频呢?这里简单说一下自己的看法。 首先&…

打破数据分析壁垒:SPSS复习必备(十)

Means过程 统计学上的定义和计算公式 定义:Means过程是SPSS计算各种基本描述统计量的过程,其实就是按照用户指定条件,对样本进行分组计算均数和标准差,如按性别计算各组的均数和标准差。 用户可以指定一个或多个变量作为分组变…

分布式系统:常见的陷阱和复杂性

分布式系统的复杂性是工程师和开发人员面临的重要挑战。复杂性往往会随着系统的发展而增加,因此积极主动非常重要。让我们来谈谈您可能会遇到哪些类型的复杂性以及在工作中应对它的有效策略。 分布式系统和复杂性 在开发中,分布式系统是相互连接并执行…

文华wh6均线交易策略多空波段止盈止损提示主图指标公式源码

文华wh6均线交易策略多空波段止盈止损提示主图指标公式源码&#xff1a; EMA120:EMA(C,120); RSV:(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100; K:SMA(RSV,3,1); D:SMA(K,3,1); J:3*K-2*D; DRAWTEXT(C>EMA120&&J<0,L,多),VALIGN0; DRAWTEXT(C<EMA…

01_02_Mybatis的配置文件与基于XML的使用

1、引入日志 在这里我们引入SLF4J的日志门面&#xff0c;使用logback的具体日志实现&#xff1b;引入相关依赖&#xff1a; <!--日志的依赖--><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version&g…

基于LangChain搭建个人知识库

前言 &#x1f63a;Hello&#xff0c;大家好&#xff0c;我是GISer Liu&#xff0c;&#x1f600;&#x1f600; 一名热爱AI技术的GIS开发者&#xff1b;在上一篇文章中&#xff0c;我们学习了LLM API的申请、应用以及提示词工程&#xff1b; 在本文中&#xff0c;作者将介绍如…

观测云 VS 开源自建

观测云是一款面向全技术栈的监控观测一体化产品方案&#xff0c;具备强大而丰富的功能&#xff0c;目标是帮助最终用户提升监控观测的能力&#xff0c;化繁为简&#xff0c;轻松的构建起完整的监控观测体系。同时能够帮助整个企业的开发技术团队从统一的观测能力上获得完整的收…