- A+
所属分类:linux技术
目录
dpdk21.11 已经删除了 igb_uio 模块,
如果需要添加 需要提前下载 igb_uio 模块,根据官网提供的下载链接,下载地址如下
IGB_UIO模块 两种添加方式
添加到文件中,然后再次编译(编译出来的结果与之前版本一致(19.11那种,直接在))
直接编译,不往文件中放,生成的IGB_UIO模块 效果一样
零、 下载IGB_UIO模块
一、 直接添加到文件中
解压上面下载的 dpdk-kmods-main.tar.gz
添加修改 对应的模块,设置对应参数
1.1 复制 dpdk-kmods/linux/igb_uio/ 到 dpdk-stable-21.11.1/kernel/linux/ 目录下
cp dpdk-kmods-main/linux/igb_uio/ ../dpdk-stable-21.11.1/kernel/linux/ -r
1.2 修改 meson.build 代码
vi dpdk-stable-21.11.1/kernel/linux/meson.build +4 --- subdirs = ['kni', 'igb_uio'] #修改: 添加 igb_uio
1.3 创建 igb_uio 模块的编译代码
创建文件 meson.build 在 dpdk*/kernel/linux/igb_uio/ 目录下 添加如下代码到 新创建的 meson.build 文件中 # ----start---- # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2017 Intel Corporation mkfile = custom_target('igb_uio_makefile', output: 'Makefile', command: ['touch', '@OUTPUT@']) custom_target('igb_uio', input: ['igb_uio.c', 'Kbuild'], output: 'igb_uio.ko', command: ['make', '-C', kernel_dir + '/build', 'M=' + meson.current_build_dir(), 'src=' + meson.current_source_dir(), 'EXTRA_CFLAGS=-I' + meson.current_source_dir() + '/../../../lib/librte_eal/include', 'modules'], depends: mkfile, install: true, install_dir: kernel_dir + '/extra/dpdk', build_by_default: get_option('enable_kmods')) # ----end----
1.4 添加IGB_UIO的编译使能
修改 dpdk-stable-21.11.1/meson_options.txt 文件 --- 21行 enable_kmods value值 变成 true
1.5 添加 kernel_dir 的定义
在 dpdk-stable-21.11.1/meson.build +15 添加 kernel_dir 的定义 --- kernel_version = run_command('uname', '-r').stdout().strip() kernel_dir = '/lib/modules/' + kernel_version
1.6 执行编译
export RTE_SDK=/home/qxy/suricata-dpdk/dpdk-stable-21.11.1/ # 根据实际目录自行修改 export RTE_TARGET=x86_64-native-linuxapp-gcc # 这个也可以随便改 meson build meson configure build -Dprefix=/home/qxy/suricata-dpdk/dpdk-stable-21.11.1/x86_64-native-linuxapp-gcc #跟上面RTE变量同步 ninja install -C ./build
--- 编译添加完成 --- 收工 --- 下班
二、 外部直接编译
2.1 下载 IGB_UIO 模块
下载地址同上
2.2 进入目录,直接make
igb_uio 目录下的 MakeFile 可以直接用,啥都不用干
cd dpdk-kmods-main/linux/igb_uio/ make
收工--下班
后记
其实还是 第二种 更方便
如果修改某些代码再次编译的话,直接执行ninja install -C ./build
这个就能重新构建出来个新的