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
- 首先下载DPDK.html" title=dpdk>dpdk19.08.2,解压,进入解压目录
cd ./DPDK.html" title=dpdk>dpdk-stable-19.08.2
- 使用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.
已放弃 (核心已转储)
报错原因应该是巨页没有配置
解决方式
- 首先可以查看以下配置信息
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 — 官网