关于在Centos上安装网卡驱动时报错Kernel header files not in any of the expected locations.解决办法之一

  • 1.问题描述
  • 2.问题所在
  • 3.问题解决
  • 小结一下



此文适合新手参考,适合大佬指教。


所以我呢,把这个问题的处理记录下来,供大家参考。

温馨提示
如果系统是最小安装或者是新装的最好要安装一下gcc、c++编译器。

yum -y install gcc gcc-c++

1.问题描述

在安装一个网卡的驱动的时候,在make的时候报错了,报错内容如下。当前环境是Centos 7。

安装centos卡在starting dracut 安装centos卡在kernel offset_网卡驱动

2.问题所在

我们先看看报的错是什么意思,第一行说的内核不在任何预期位置。
对于这个报错呢,我的理解是内核与内核头文件不一致。

使用 yum list |grep kernel 查看

安装centos卡在starting dracut 安装centos卡在kernel offset_网卡驱动_02

首先先说这条命令,其实就是查看本地yum仓库中可用的各个kernel的版本。

然后就得说一说第三列是个什么东西了,第一列和第二列都还好一眼就能看出来,第三列的的@anaconda 表示安装内核的时候已经带的包,updates表示可以从yum更新的包,base是linux自带的软件包

接下来说行,其实列很简单很容易就能看个大概或看懂。看行最重要的一点就是第三列的内容要清楚,前面提到@anaconda 表示安装内核的时候已经带的包,这里很重要,这个@是代表已经安装的,了解这点就很简单了,如上图只有三个带@符号的,那就是说明我这里只安装了三个东西,下面的全是没有安装的。

现在问题一目了然了,由于我这个系统是最小安装或者说是其他的问题,导致我这里没有安装kernel-headerskernel-devel包,那么我就需要下载到这两个东西。

刚刚上面提到updates是可以从yum更新的,观察带updates的行,可以发现我这里的yum仓没有我需要的,我的内核是:kernel-3.10.0-1160.el7 而我yum仓里只有kernel-headers-3.10.0-1160.83.1.el7以及kernel-devel-3.10.0-1160.83.1.el7,和我的内核不是一个版本,所以我就不能直接使用yum install kernel-headers来安装。

3.问题解决

幸运的是我这里可以直接使用一下两条指令来解决我的这个问题

yum -y install kernel-headers-3.10.0-1160.el7
yum -y install kernel-devel-3.10.0-1160.el7

安装centos卡在starting dracut 安装centos卡在kernel offset_c++_03


这里就可以验证带@的是安装好了的,使用两条命令多了两行。

我的问题到这里就解决了,接下来的make和make install就正常了。

小结一下

最方便的情况就是yum仓有使用如下命令就能解决

yum install kernel-headers

其次就是可以直接用命令下载对应的版本,命令如下(参考代码,你得对应你自己的版本)

yum -y install kernel-headers-3.10.0-1160.el7

最坏的情况就是上面两条命令都不能解决,那可能就得手动去官网下载了。