當你在編譯一個設備驅動模塊時,你需要在系統中安裝內核頭文件。內核頭文件同樣在你編譯與內核直接鏈接的用戶空間程序時需要。當你在這些情況下安裝內核頭文件時,你必須確保內核頭文件精確地與你當前內核版本匹配(比如:3.13.0-24-generic)。
如果你的內核是發行版自帶的內核版本,或者使用默認的包管理器的基礎倉庫升級的(比如:apt-ger、aptitude或者yum),你也可以使用包管理器來安裝內核頭文件。另一方面,如果下載的是kernel源碼並且手動編譯的,你可以使用make命令來安裝匹配的內核頭文件。
現在我們假設你的內核是發行版自帶的,讓我們看下該如何安裝匹配的頭文件。
在 Debian、Ubuntu 或者 Linux Mint 上安裝內核頭文件
假設你沒有手動編譯內核,你可以使用apt-get命令來安裝匹配的內核頭文件。
首先,使用dpkg-query命令檢查是否有可用的內核頭文件。
復制代碼代碼如下: $ dpkg-query -s linux-headers-$(uname -r) </p>
<p> 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) </p>
<p> Package: linux-headers-3.11.0-26-generic
Status: install ok installed
Debian、Ubuntu、Linux Mint默認頭文件在/usr/src下。
在 Fedora、CentOS 或者 RHEL 上安裝內核頭文件
假設你沒有手動編譯內核,你可以使用yum命令來安裝匹配的內核頭文件。
首先,用下面的命令檢查系統是否已經安裝了頭文件。如果下面的命令沒有任何輸出,這就意味著還沒有頭文件。
復制代碼代碼如下:$ rpm -qa | grep kernel-headers-$(uname -r)
接著用yum命令安裝頭文件。這個命令會自動找出合適的頭文件並安裝。
復制代碼代碼如下: $ sudo yum install kernel-headers
驗證包安裝的狀態。
復制代碼代碼如下:$ rpm -qa | grep kernel-headers-$(uname -r) </p>
<p> kernel-headers-3.10.0-123.9.3.el7.x86_64