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

编译Linux内核kernel-debuginfo RPM失败:无法找到debugfiles.list

解决CentOS7下编译Linux 3.10内核kernel-debuginfo RPM包的问题

我来帮你搞定这个问题。你遇到的debugsources.list找不到的错误,是因为移除%define debug_package %{nil}后,RPM构建流程会尝试生成调试包,但内核源码的默认打包脚本没有自动生成这个文件。下面给你两种可行的解决思路:

方法一:修复当前mkspec修改,补全调试包生成逻辑

  1. 调整mkspec的修改方式
    不要直接删除echo "%define debug_package %{nil}"这一行,而是把它替换成系统默认的调试包定义,让RPM使用标准的调试包生成机制:

    # 原行:echo "%define debug_package %{nil}"
    echo "%define debug_package %{__debug_package}"
    
  2. 确保内核编译时开启调试信息
    调试包需要内核编译时包含调试符号,必须开启对应配置:

    • 运行make menuconfig,进入Kernel hacking -> Compile-time checks and compiler options
    • 勾选Compile the kernel with debug info(对应配置项CONFIG_DEBUG_INFO=y)
    • 可选:如果需要更详细的调试信息,可勾选Compile the kernel with dwarf4 debug info(CONFIG_DEBUG_INFO_DWARF4=y)
    • 保存配置后退出。
  3. 手动生成debugsources.list文件
    在执行make rpm前,在内核源码根目录执行以下命令生成该文件:

    find . -name "*.c" -o -name "*.h" | grep -v ".git" | sort > debugsources.list
    

    构建时RPM会自动读取这个文件,避免找不到的错误。

方法二:用rpmbuild标准流程强制生成调试包

这种方法不需要修改内核的mkspec脚本,更稳定可靠:

  1. 先生成内核的SRPM包

    make dist
    make srpm
    

    执行完成后,SRPM包会生成在../rpmbuild/SRPMS/目录下。

  2. 使用rpmbuild重新构建并强制生成调试包
    通过--with debug参数覆盖内核spec里的调试包禁用设置:

    rpmbuild --rebuild --with debug ../rpmbuild/SRPMS/kernel-3.10*.src.rpm
    
  3. 获取生成的调试包
    构建完成后,kernel-debuginfo*.rpm会出现在../rpmbuild/RPMS/对应的架构子目录下(比如x86_64)。

额外注意事项

  • 确保系统安装了所有必要的构建依赖:
    yum install -y rpm-build redhat-rpm-config gcc make ncurses-devel flex bison openssl-devel elfutils-libelf-devel
    
  • 调试包体积较大,确保磁盘有足够存储空间;如果构建中出现其他依赖错误,根据提示安装对应包即可。

内容的提问来源于stack exchange,提问作者绗ㄩ笩鍏堥

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:17:39