nvme用户态驱动-day02-dpdk-v21.11编译

332 阅读1分钟

修订记录

  • 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