Fedora 38下rpmbuild构建debuginfo包失败:debugsourcefiles.list为空
解决Fedora 38中rpmbuild构建debuginfo包时find-debuginfo找不到源文件的问题
排查与解决步骤
1. 确保编译时生成调试信息
编译过程必须保留调试符号,否则find-debuginfo无法提取有效信息:
- 若使用autotools,配置时添加
--enable-debug参数:./configure --enable-debug - 若使用CMake,指定构建类型为
RelWithDebInfo或Debug:cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo .. - 手动编译时需添加
-g参数:gcc -g -o myprogram myprogram.c
2. 验证源码解压路径与调试信息中的路径匹配
用readelf查看二进制文件中的调试信息路径,确认与BUILD目录下的源码路径一致:
readelf -w %{_builddir}/mysoft-8.19.0/bin/myprogram | grep "DW_AT_name"
对比输出的源文件路径,检查BUILD目录下是否存在对应文件。如果路径不匹配,可在%prep阶段调整解压方式,比如使用%setup -n mysoft-8.19.0确保解压目录名称与版本一致。
3. 手动调用find-debuginfo.sh指定源目录
若自动检测失败,可在%install阶段后手动指定源码目录运行find-debuginfo.sh:
%install # 你的安装命令 %{_rpmconfigdir}/find-debuginfo.sh --source-dir %{_builddir}/mysoft-8.19.0 %{buildroot}
4. 手动运行find-debuginfo.sh排查错误
直接在BUILD目录下运行find-debuginfo.sh,查看具体错误提示:
cd %{_builddir}/mysoft-8.19.0 %{_rpmconfigdir}/find-debuginfo.sh .
根据输出判断是二进制文件无调试信息,还是源文件路径无法匹配。
5. 检查rpmbuild宏定义正确性
确认rpmbuild的路径宏指向正确:
rpm --showrc | grep -E "_rpmtopdir|_builddir"
确保%{_builddir}指向的目录与你解压源码的路径一致。
内容的提问来源于stack exchange,提问作者Henry Fané
相关产品推荐
相关产品推荐

