如何在 Linux 上安装内核头文件
问题:我需要安装内核头文件来为我的内核安装设备驱动程序。在 [插入您的 Linux 发行版] 上安装匹配的内核头文件的正确方法是什么?
当您将设备驱动程序编译为自定义内核模块时,您需要在 Linux 系统上安装内核头文件。当您构建直接链接到内核的用户空间应用程序时,也需要内核头文件。在这种情况下安装内核头文件时,必须确保内核头文件与系统的内核版本完全匹配(例如 3.13.0-24-generic)。
如果您的内核是发行版附带的默认版本,或者您使用基本存储库中的默认包管理器(例如,apt-get
、aptitude
或 yum
)对其进行了升级,则您也可以使用包管理器安装匹配的内核标头。另一方面,如果您下载了内核源代码并手动编译它,则可以使用 make
命令安装匹配的内核头文件。
在这里,我们假设您的内核来自 Linux 发行版的基础存储库,并了解如何安装匹配的内核头文件。
在 Debian、Ubuntu 或 Linux Mint 上安装内核头文件
假设您没有手动编译内核,您可以使用 apt-get 命令安装匹配的内核头文件。
首先,使用 dpkg-query 命令检查您的系统上是否已存在匹配的内核标头。
$ dpkg-query -s linux-headers-$(uname -r)
dpkg-query: package 'linux-headers-3.11.0-26-generic' is not installed and no information is available
继续安装匹配的内核头文件,如下所示。
$ sudo apt-get install linux-headers-$(uname -r)

验证匹配的内核头是否已成功安装。
$ dpkg-query -s linux-headers-$(uname -r)
Package: linux-headers-3.11.0-26-generic
Status: install ok installed
Debian、Ubuntu 或 Linux Mint 上内核头文件的默认位置是 /usr/src
。
在 Fedora、CentOS 或 RHEL 上安装内核头文件
如果您没有手动升级内核,您可以使用 yum 命令安装匹配的内核头文件。
首先,检查您的系统上是否已安装匹配的内核头文件。内核头文件的默认位置是/usr/src/kernels/
。
如果在该目录中没有找到匹配的内核头文件,请继续使用 yum 命令安装内核头文件,如下所示。
$ sudo yum install kernel-devel

如果上述命令安装的内核头文件与您当前的内核不匹配,这是因为您的内核已经过时。在这种情况下,请通过运行以下命令将已安装的内核更新到最新版本。这将自动安装匹配的内核。更新内核后需要重新启动。
$ sudo yum install kernel
现在通过运行以下命令验证是否安装了匹配的内核头:
$ ls /usr/src/kernels/$(uname -r)
arch firmware ipc Makefile samples System.map vmlinux.id
block fs Kconfig mm scripts tools
crypto include kernel Module.symvers security usr
drivers init lib net sound virt