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

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

dpdk19.08编译过程全解

image.png

dpdk 介绍

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

问题描述

  编译dpdk19.08.2,并使用example的案例时报错及解决方式。

编译过程

执行Step 1

  1. 首先下载dpdk19.08.2,解压,进入解压目录
    cd ./dpdk-stable-19.08.2
    
  2. 使用dpdk提供的工具编译
./usertools/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-setup.sh

输入36 ,回车

报错二

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

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

解决方式

本次开发不需要安装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编译配置

使用过程

进入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解压目录,查看解压目录路径,然后配置上去

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

还需要配置刚刚dpdk编译生成的目录的环境变量
image.png

通常是选择的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
dpdk — 官网

目录
相关文章
|
存储 缓存 网络协议
DPDK入门(环境搭建以及小demo)
DPDK入门(环境搭建以及小demo)
1281 0
|
应用服务中间件 测试技术 nginx
dpdk环境搭建及运行helloworld测试
dpdk环境搭建及运行helloworld测试
616 0
|
缓存 网络协议 Ubuntu
dpdk课程学习之练习笔记一(接收,发送,arp,icmp功能测试)
dpdk课程学习之练习笔记一(接收,发送,arp,icmp功能测试)
433 0
|
Linux API 调度
深入了解DPDK:如何优化网络包处理性能(上)
深入了解DPDK:如何优化网络包处理性能
深入了解DPDK:如何优化网络包处理性能(上)
|
7月前
skynet.start 的作用详细解析
skynet.start 的作用详细解析
169 3
|
7月前
|
网络协议 安全 API
skynet.dispatch 使用详解
skynet.dispatch 使用详解
288 2
|
8月前
|
监控 Ubuntu Linux
Windows11 WSL2 Ubuntu编译安装perf工具
通过以上步骤,你已经在Windows 11的WSL2中成功编译并安装了 `perf`工具。尽管在WSL2中可能会遇到一些限制,但大部分基本性能分析功能应当可以正常使用。使用 `perf`进行性能分析,可以帮助你更好地理解和优化系统及应用程序的性能。
599 14
|
负载均衡 网络协议 算法
|
运维 供应链 监控
一文带你了解什么是TOGAF?及TOGAF的应用?
TOGAF(The Open Group Architecture Framework)是由The Open Group组织开发的企业架构框架,提供了一套方法论、工具和术语,帮助企业设计、规划、实施和管理企业架构。其核心是架构开发方法(ADM),涵盖从架构愿景到实施的各个阶段。TOGAF支持跨部门协作、持续改进和项目成功,适用于新系统开发、系统升级、业务流程优化和组织变革管理等场景。
2505 1
一文带你了解什么是TOGAF?及TOGAF的应用?
|
负载均衡 网络协议 安全
DPDK用户态协议栈-KNI
DPDK用户态协议栈-KNI