修订记录
- 2022-06-29 00:25 v1.0 初稿
- 2022-07-02 19:37 v1.1 补充dpdk应用程序
下载dpdk包
git clone https://github.com/DPDK/dpdk.git
cd dpdk
git checkout v21.11
安装依赖
新版本dpdk使用meson和ninja构建,所以要安装这两个工具包。python3-pyelftools是dpdk编译用到的一个工具,也需要安装上。
apt install -y meson
apt install -y generate-ninja
apt install -y python3-pyelftools
编译dpdk
参考官方quick start https://core.dpdk.org/doc/quick-start/, 这边直接使用默认配置构建
meson build
ninja -C build
安装构建好的dpdk到linux环境
cd dpdk/build
# 此时dpdk默认安装到/usr/local/lib/x86_64-linux-gnu/dpdk/pmds-22.0/下
meson install
最简单的dpdk应用程序
#include <stdio.h>
#include <rte_config.h>
#include <rte_malloc.h>
#include <rte_mempool.h>
#include <rte_lcore.h>
int main(int argc, char *argv[])
{
int rc;
rc = rte_eal_init(argc, argv);
if (rc < 0) {
rte_panic("rte init failed\n");
}
return 0;
}
编译该dpdk程序
gcc test.c -o test -L/usr/local/lib/x86_64-linux-gnu/dpdk/pmds-22.0/ -lrte_eal -ldl
运行,可以看到dpdk初始化的一些信息
root@cjhjy-virtual-machine:/Images/git# ./test
EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: No available 1048576 kB hugepages reported
EAL: VFIO support initialized
TELEMETRY: No legacy callbacks, legacy socket not created