我正在尝试使用介子构建igb_uio内核模块。我使用以下Meson.Build文件来构建驱动程序。
文件:内核/linux/igb_gio/Meson.Build
# 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,
'M=' + meson.current_build_dir(),
'src=' + meson.current_source_dir(),
'EXTRA_CFLAGS=-I' + meson.current_source_dir() +
'/../../../lib/librte_eal/common/include',
'modules'],
depends: mkfile,
install: true,
install_dir: kernel_dir + '/../extra/dpdk',
build_by_default: get_option('enable_kmods'))
我的构建失败,出现错误:内核/Linux/IGB_UIO/Meson.Build:6:17:Error:lexer命令:[Touch,@Output@])
我尝试将文件名作为igb_src=files(igb_uio.c‘,’kbuild‘)传递,然后将输入赋值为:igb_src,但没有成功。你能告诉我如何解决这个问题吗?我使用的是介子版本.49.2
1条答案
按热度按时间but5z9lq1#
根据DPDK版本的不同,DPDK源代码中可能存在或不存在IGB_UIO内核驱动程序代码。直到DPDK版本19.11 LTS,它都是源文件夹的一部分。从DPDK版本20.02和更高版本开始,文件将被删除,并且需要单独构建。但在这两种情况下,这都是独立的构建环境,不需要外部干预。
当前错误
kernel/linux/igb_uio/meson.build:6:17: ERROR: lexer command: [touch, @OUTPUT@])
不是DPDK构建(生成文件或介子)问题的一部分,而是词法分析器无法找到touch
。这似乎更多的是环境和设置问题。在通用的Linux操作系统发行版(fedora、debian、hel、centos或ubuntu)上,
touch
通常位于/usr/bin/
中。如果是自定义内核或docker环境,请确保共享或更新路径以反映touch
。然后按如下方式执行对于DPDK 20.02和更高版本:
对于DPDK版本19.11 LTS及更低版本:
介子构建:
1.确保在文件
meson_options.txt
中,enable_kmods
的值为TRUE
。1.执行
meson custombuild; ninja -C custombuild install; cd custombuild/kmod/
1.使用
modprobe uio; insmod igb_uio.ko
Makefile内部版本:
1.使用
make config T=[desired target] O=[output folder]
构建配置文件夹1.编辑
[output folder]/.config
,确保CONFIG_RTE_EAL_IGB_UIO
设置为y
1.设置RTE_SDK和RTE_TARGET,执行
make -j
1.使用
modprobe uio; insmod igb_uio.ko