内核/linux/igb_uio/Meson.Build:6:17:Error:lexer

0tdrvxhp  于 2022-10-23  发布在  Linux
关注(0)|答案(1)|浏览(642)

我正在尝试使用介子构建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

but5z9lq

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和更高版本:

git clone http://dpdk.org/git/dpdk-kmods
dpdk-kmods/linux/igb_uio/
make
modprobe uio
insmod igb_uio.ko
  • 注意:无论DPDK版本如何,内核模块都可以使用此方法*

对于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

相关问题