15AH, San Francisco

California, United States.

Send Your Mail At:

tianyingkejishe@sina.cn

Working Hours

Mon-Sat: 9.30am To 7.00pm

common.mk:79: *** Kernel header files not in any of the expected locations. common.mk:80: *** Install the appropriate kernel development package, e.g. common.mk:81: *** kernel-devel, for building kernel modules and try again. Stop.

根据错误信息和搜索结果,该报错是由于编译内核模块时系统缺少与当前运行内核完全匹配的内核开发包(kernel-develkernel-headers)导致的。以下是完整解决方案:


🔧 一、安装匹配的内核开发包

  1. 确认当前内核版本
    终端执行:uname -r # 示例输出:3.10.0-1160.81.1.el7.x86_64
  2. 安装对应版本的内核开发包sudo yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r)
    • 若yum仓库无匹配版本(常见于自定义内核或旧系统):
      • 手动下载rpm包:访问 pkgs.org 搜索内核版本对应的包(参考11
      • 强制安装:sudo rpm -ivh --force kernel-devel-*.rpm kernel-headers-*.rpm

📂 二、检查内核头文件路径

  1. 验证文件是否存在
    检查以下目录是否包含当前内核版本的文件夹:ls /usr/src/kernels/$(uname -r)
  2. 修复软链接问题(关键步骤)
    /usr/src/linux指向错误路径或无链接,需重建:sudo rm -f /usr/src/linux sudo ln -s /usr/src/kernels/$(uname -r) /usr/src/linux 注:此操作解决编译脚本查找头文件的路径问题(参考185

⚠️ 三、其他可能原因

  1. 未安装编译工具链
    确保已安装基础开发工具:sudo yum groupinstall "Development Tools" sudo yum install elfutils-libelf-devel # 缺少libelf时报错(引用[10]())
  2. 硬件兼容性问题
    • NVIDIA显卡驱动安装时需先禁用nouveau驱动(参考5):echo "blacklist nouveau" | sudo tee /etc/modprobe.d/blacklist-nouveau.conf sudo update-initramfs -u
    • 虚拟机环境(如VMware)需检查内核模块签名(引用13

📝 四、完整操作流程示例

bash

复制

# 步骤1:安装开发包 sudo yum install -y gcc make kernel-devel-$(uname -r) kernel-headers-$(uname -r) # 步骤2:修复软链接 sudo ln -sfn /usr/src/kernels/$(uname -r) /usr/src/linux # 步骤3:重新编译驱动 cd /path/to/driver/src make clean && make sudo make install

💡 重要提示
若仍报错,请检查:

  1. 内核版本是否完全一致(包含次版本号,如3.10.0-1160.xx.x )
  2. 系统是否更新后未重启(需重启使新内核生效)
  3. Secure Boot是否禁用(部分驱动需关闭安全启动)

此问题90%由内核开发包版本不匹配软链接路径错误导致(综合12718)。如遇特殊情况,可查看具体驱动的common.mk 脚本中定义的路径规则。

anyShare分享到:
本站的文章和资源来自互联网或者站长的原创,按照 CC BY -NC -SA 3.0 CN协议发布和共享,转载或引用本站文章应遵循相同协议。如果有侵犯版权的资源请尽快联系站长,我们会在24h内删除有争议的资源。欢迎大家多多交流,期待共同学习进步。
stormwind

发表评论