You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ninja构建DPDK 21.11.1无报错中途退出故障排查求助

DPDK 21.11.1 构建时ninja静默无错退出修复方案

触发原因

  • meson命令参数顺序、prefix配置错误:meson要求所有构建选项必须放在源目录、构建目录参数之前;RPM打包场景下$RPM_BUILD_ROOT是安装阶段的临时根路径,配置阶段直接写入prefix会导致构建时路径解析异常。
  • 无错误提示直接退出的核心原因是编译进程被系统OOM Killer强制终止:GCC 10.2.1编译rte_vhost、rte_pipeline模块时,debug模式下符号信息体积大,默认全核并行编译时内存占用超过系统可用阈值,内核直接杀死进程,不会在用户态输出任何报错。
  • DPDK 21.11版本与meson 0.49.x存在已知兼容问题,仅升级meson版本不调整构建参数无法解决问题。

修复操作

  1. 修正spec文件中meson配置逻辑,调整参数顺序,移除配置阶段对$RPM_BUILD_ROOT的错误引用:
rm -rf %{buildroot}
# RPM的%build阶段默认在源码根目录执行,仅需传入构建目录即可,prefix填写系统实际安装路径
meson %{buildroot} \
  -Dprefix=%{_prefix} \
  --buildtype=debug \
  -Dc_args='-Wno-error=implicit-function-declaration'
  1. 限制ninja并行编译任务数,避免内存耗尽:
    单编译线程编译DPDK C文件约占用1.5~2G内存,根据构建机实际内存配置调整并行数,例如8G内存机器配置4个并行任务:
cd %{buildroot}
ninja -j 4 -v

执行后如果依然直接退出,执行以下命令查内核日志确认是否为OOM导致:

dmesg | grep -E "oom|Killed process"

如果日志中存在gcc、ninja相关进程被杀死的记录,继续调低-j后的数值即可。
3. 安装阶段再传入临时根路径,不要在配置阶段绑定构建目录到RPM临时路径:

cd %{buildroot}
DESTDIR=$RPM_BUILD_ROOT ninja install

内容的提问来源于stack exchange,提问作者shiv chittora

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 19:57:16