Pktgen控制台Lua支持未启用问题求助(CentOS 7.9环境)
问题:Pktgen Lua支持启用失败
在CentOS 7.9上部署Pktgen 23.03.0,系统Lua 5.1.4正常可用,Pktgen能检测到Lua,但构建时始终显示lua_enabled: -Denable_lua=false。即使修改了meson_options.txt并执行meson -Denable_lua=true --reconfigure build,在Pktgen控制台执行Lua脚本仍报错:
User State for CLI not set for Lua, please build with Lua enabled
相关配置与输出
meson_options.txt
option('enable_lua', type: 'boolean', value: true, description: 'Enable Lua support') option('enable_gui', type: 'boolean', value: false, description: 'build the gui') option('enable_docs', type: 'boolean', value: false, description: 'build documentation') option('enable-avx', type: 'boolean', value: true, description: 'Try to compile with AVX support') option('enable-avx2', type: 'boolean', value: false, description: 'Try to compile with AVX2 support') option('only_docs', type: 'boolean', value: false, description: 'Only build documentation')
meson.build(Lua相关关键片段)
if get_option('enable_lua') message('>>>>>>>>>>>>> Lua enabled <<<<<<<<<<<<<<') add_project_arguments('-DLUA_ENABLED', language: 'c') lua_names = ['lua', 'lua-5.3', 'lua5.3', 'lua-5.4', 'lua5.4'] foreach n:lua_names lua_dep = dependency(n, required: false) if not lua_dep.found() lua_dep = cc.find_library(n, required: false) endif if lua_dep.found() break endif endforeach if not lua_dep.found() error('unable to find Lua') endif endif
Make命令输出片段
$ make >>>>> Use 'make help' for more commands ./tools/pktgen-build.sh build >> SDK Path : /home >> Install Path : /home/pktgen-dpdk-pktgen-23.03.0 >> Build Directory : /home/pktgen-dpdk-pktgen-23.03.0/Builddir ... Build and install values: lua_enabled : -Denable_lua=false gui_enabled : -Denable_gui=false >>>>> Ninja build in '/home/pktgen-dpdk-pktgen-23.03.0/Builddir' buildtype=release meson -Dbuildtype=release -Denable_lua=false -Denable_gui=false /home/pktgen-dpdk-pktgen-23.03.0/Builddir ... ninja: no work to do. >>>>> Ninja install to '/home/pktgen-dpdk-pktgen-23.03.0/usr/local'
手动重新配置输出片段
meson -Denable_lua=true --reconfigure build The Meson build system Version: 0.55.1 Source dir: /home/pktgen-dpdk-pktgen-23.03.0 Build dir: /home/pktgen-dpdk-pktgen-23.03.0/build ... Message: >>>>>>>>>>>>> Lua enabled <<<<<<<<<<<<<< Dependency lua found: YES 5.1.4 (cached) ...
问题根源
- 构建目录不统一:Make调用的
pktgen-build.sh使用Builddir(大写B)目录,而手动配置的是build(小写b)目录,两者为独立构建环境,导致配置未被实际构建采用。 - 脚本硬编码参数:
pktgen-build.sh执行meson时,硬编码传递-Denable_lua=false,覆盖了meson_options.txt的默认值。
解决步骤
方法1:修改构建脚本并重新构建
- 编辑
tools/pktgen-build.sh,找到meson参数传递部分,将-Denable_lua=false改为-Denable_lua=true。 - 清理旧构建目录:
rm -rf Builddir build - 重新构建安装:
make clean make make install
方法2:绕过Make,手动执行构建
直接用meson和ninja完成构建,避免脚本干扰:
- 清理旧构建目录:
rm -rf Builddir build - 初始化构建环境并启用Lua:
meson setup -Dbuildtype=release -Denable_lua=true build - 编译并安装:
ninja -C build ninja -C build install
验证Lua支持
启动Pktgen后执行Lua脚本,若不再报错则说明支持已启用。
内容的提问来源于stack exchange,提问作者Haris Khalid
相关产品推荐
相关产品推荐

