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

RHEL8构建RPM报错gdb-add-index未创建索引 无法生成debuginfo包

RHEL 8 环境RPM构建无法生成debuginfo包问题解决

根因说明

RHEL8 搭载的rpm-build-4.14.3相比RHEL6、RHEL7的旧版本,对debuginfo包生成逻辑做了两处不兼容变更:

  • 默认在/usr/lib/rpm/find-debuginfo.sh执行流程尾部新增强制gdb-add-index步骤,要求所有被扫描的共享库、二进制文件必须成功生成gdb索引,否则直接判定debuginfo提取失败、中断流程。你遇到的

gdb-add-index: No index was created for [对应so文件绝对路径]
gdb-add-index: [Was there no debuginfo? Was there already an index?]
提示本身在RHEL6/7版本属于非阻断警告,旧版本脚本不会因为该提示退出,因此可以正常生成debuginfo包。你构建流程中涉及的libons.so、libclntshcore.so.12.1属于预编译的第三方二进制(Oracle客户端组件),本身未携带符合gcc -g编译规范的调试段、或已预先生成过内置索引,就会触发该阻断。

  • 旧版本通用的%global debug_package %{nil}配置在RHEL8中宏优先级降低,如果系统全局rpm宏配置、构建脚本中提前设置了_enable_debug_packages=1,spec文件内的该配置会被覆盖,导致禁用debuginfo的操作不生效。

解决方案

根据实际需求二选一即可:

方案1:保留debuginfo包生成能力

在spec文件最顶部(所有段定义之前)添加如下宏配置,跳过阻断性的索引检查:

# 关闭强制gdb索引生成步骤
%global _find_debuginfo_opts --run-dwz --no-gdb-index
# 关闭无调试符号时的构建阻断
%global _strict_symbol_defs_build 0

配置后重新执行构建即可正常生成debuginfo包,不会再被gdb-add-index的提示中断流程。

方案2:彻底禁用debuginfo包生成

不要仅配置debug_package %{nil},需要同时覆盖三个层级的宏开关,才能彻底跳过debuginfo提取流程,同样将如下配置放到spec文件最顶部:

%global _enable_debug_packages 0
%global debug_package %{nil}
%global __debug_install_post %{nil}

如果不想修改spec文件,也可以直接在rpmbuild构建命令中传参临时生效:

rpmbuild -ba 你的spec文件路径 \
  --define "_enable_debug_packages 0" \
  --define "debug_package %{nil}" \
  --define "__debug_install_post %{nil}"

执行后构建流程会直接跳过find-debuginfo.sh的调用,不会再出现相关报错,也不会生成任何debuginfo相关子包。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:54:22