编译dpdk19.08.2中example时一系列报错解决

news/2025/1/31 0:44:57 标签: dpdk, C语言, DPDK, 数据平面开发套件, ubuntu

DPDK.html" title=dpdk>dpdk19.08编译过程全解

  • DPDK.html" title=dpdk>dpdk 介绍
  • 问题描述
  • 编译过程
    • 执行Step 1
      • 报错一
        • 解决方式
      • 报错二
        • 解决方式
    • 继续执行Step 2
      • 48的时候报错
    • 49没有修改成功
    • 输入60退出
  • 使用过程
    • 执行make
      • 报错一
        • 解决方式
    • 继续make
      • 报错二
        • 解决方式
    • 继续make
    • 执行生成文件helloworld
      • 报错三
        • 解决方式
    • 执行make
  • 完成
  • 参考链接

在这里插入图片描述

DPDK.html" title=dpdk>dpdk__4">DPDK.html" title=dpdk>dpdk 介绍

  数据平面开发套件(DPDK [1],Data Plane Development Kit)是由6WIND,Intel等多家公司开发,主要基于Linux系统运行,用于快速数据包处理的函数库与驱动集合,可以极大提高数据处理性能和吞吐量,提高数据平面应用程序的工作效率。[1]

问题描述

  编译DPDK.html" title=dpdk>dpdk19.08.2,并使用example的案例时报错及解决方式。

编译过程

执行Step 1

  1. 首先下载DPDK.html" title=dpdk>dpdk19.08.2,解压,进入解压目录
cd ./DPDK.html" title=dpdk>dpdk-stable-19.08.2
  1. 使用DPDK.html" title=dpdk>dpdk提供的工具编译
./usertools/DPDK.html" title=dpdk>dpdk-setup.sh

输入36 ,回车

报错一

eal/eal_memory.c:32:10: fatal error: numa.h: No such file or directory

报错原因是numa没下载。

解决方式

下载缺失部分

sudo apt-get install libnuma-dev

然后重新进入执行

./usertools/DPDK.html" title=dpdk>dpdk-setup.sh

输入36 ,回车

报错二

Build complete [x86_64-native-linuxapp-gcc]
Installation cannot run with T defined and DESTDIR undefined

报错原因是,没有配置安装目录,无法安装。

解决方式

本次开发不需要安装DPDK.html" title=dpdk>dpdk,所以忽略这个报错。

继续执行Step 2

依次输入43-50,输入49和50的时候,还需要在回车后第二次输入512

48的时候报错

/usr/bin/env: ‘python’: No such file or directory

没有找到python的路径,输入下面命令,发现系统是有python的,只是不是路径上

whereis python3

添加一个链接即可

sudo ln -s /usr/bin/python3 /usr/bin/python

49没有修改成功

Warning: routing table indicates that interface 0000:03:00.0 is active. Not modifying

需要先把这个网卡down掉,再修改
sudo ifconfig eth160 down

输入60退出

完成DPDK.html" title=dpdk>dpdk编译配置

使用过程

进入examples目录的helloworld案例

cd examples/helloworld

执行make

make

报错一

/bin/sh: 1: pkg-config: not found

报错原因是没有安装pkg-config

解决方式
sudo apt-get install pkg-config

继续make

报错二

Makefile:44: *** "Please define RTE_SDK environment variable"。 停止。

报错原因,没有定义RTE_SDK 环境变量

解决方式

进入到DPDK.html" title=dpdk>dpdk解压目录,查看解压目录路径,然后配置上去

export RTE_SDK=解压路径
或者
export RTE_SDK=$(PWD)

还需要配置刚刚DPDK.html" title=dpdk>dpdk编译生成的目录的环境变量
在这里插入图片描述
通常是选择的DPDK.html" title=dpdk>dpdk环境的名称

export RTE_TARGET=x86_64-native-linuxapp-gcc

如果上面一步的 RTE_TARGET 没有配置正确,会有下面的报错:

***mk/internal/rte.extvars.mk:29: *** Cannot find .config in ***

修改成正确的就行了

继续make

进入helloworld目录,执行 make
输出如下则编译成功

CC main.o
LD helloworld
INSTALL-APP helloworld
INSTALL-MAP helloworld.map

执行生成文件helloworld

执行

./build/helloworld

报错三

EAL: Cannot get hugepage information.
已放弃 (核心已转储)

报错原因应该是巨页没有配置

解决方式
  1. 首先可以查看以下配置信息
cat /proc/meminfo | grep Huge

输出
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB


cat /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
输出
0

依次执行下面的命令配置巨页

1.
echo '1024' > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages

2.
如果没/mnt/huge这个文件夹,就创建一个huge,有则忽略下面这一步
mkdir /mnt/huge

3.
mount -t hugetlbfs nodev /mnt/huge

执行make

make clean
make
./build/helloworld

输出
hello from core 1
hello from core 0

完成

以上就全部完成,可以去编写自己的代码了,报错部分基本解决,还有部分警告部分还没有去解决。

参考链接

百度百科— DPDK.html" title=dpdk>dpdk
DPDK.html" title=dpdk>dpdk — 官网


http://www.niftyadmin.cn/n/5838191.html

相关文章

MySQL(高级特性篇) 12 章——数据库其它调优策略

一、数据库调优的措施 (1)调优的目标 尽可能节省系统资源,以便系统可以提供更大负荷的服务(吞吐量最大)合理的结构设计和参数调整,以提高用户操作的响应速度(响应速度更快)减少系统…

DeepSeek LLM解读

背景: 量化巨头幻方探索AGI(通用人工智能)新组织“深度求索”在成立半年后,发布的第一代大模型DeepSeek试用地址:DeepSeek ,免费商用,完全开源。作为一家隐形的AI巨头,幻方拥有1万枚…

H264原始码流格式分析

1.H264码流结构组成 H.264裸码流(Raw Bitstream)数据主要由一系列的NALU(网络抽象层单元)组成。每个NALU包含一个NAL头和一个RBSP(原始字节序列载荷)。 1.1 H.264码流层次 H.264码流的结构可以分为两个层…

上位机知识篇---Linux的shell脚本搜索、查找、管道

文章目录 前言第一部分:什么是shell?1. 基本结构脚本声明注释命令和表达式例子 2.变量控制结构条件判断 3.函数输入输出重定向 4.执行命令5.实际应用 第二部分:Linux的搜索、查找、管道命令1.搜索命令2.查找命令3.管道操作 总结 前言 以上就…

git中有关old mode 100644、new mode 10075的问题解决小结

在 Git 版本控制系统中,文件权限变更是一种常见情况。当你看到类似 old mode 100644 和 new mode 100755 的信息时,这通常表示文件的权限发生了变化。本文将详细解析这种情况,并提供解决方法和注意事项。 问题背景 在 Git 中,文…

pytorch卷积的入门操作

左侧图像模拟一个图像数据,当我们用右侧的卷积核对其进行卷积操作时,设置stride 1或不设置默认为1,每次对应的格子相乘完之后,卷积核向右移动一格,再次对应相乘得到结果,如下过程简单演示。 卷积核就像一个…

【设计测试用例自动化测试性能测试 实战篇】

🌈个人主页:努力学编程’ ⛅个人推荐: c语言从初阶到进阶 JavaEE详解 数据结构 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 设计测试用例…

Python3 【函数】:函数编写训练15列

Python3 【函数】:函数编写训练15列 以下是 15 个 Python 函数使用的经典范例,每个范例都包含完整的程序代码、代码解释说明、测试案例以及程序执行结果。这些案例可供初学者模仿和学习,从而快速掌握函数的编写方法,为进阶学习打…