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

dpdk19.08编译过程全解

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

在这里插入图片描述

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
  1. 使用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编译生成的目录的环境变量
在这里插入图片描述
通常是选择的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 — 官网

你可能感兴趣的:(linux服务器相关,dpdk,C语言,DPDK,数据平面开发套件,ubuntu)