Wie installiere ich Kernel-Header-Dateien?

85

Ich möchte einen Gerätetreiber schreiben, kann aber die Header-Datei nicht finden. Kann mir jemand helfen, sie zu finden? Auch wenn jemand auf einige wichtige Site-Links hinweisen kann, die sehr geschätzt würden

Kodierer
quelle

Antworten:

118

Sie sollten in der Lage sein, die Kernel-Header-Dateien für den aktuell ausgeführten Kernel zu installieren, indem Sie Folgendes in einem Terminal ausführen:

sudo apt-get install linux-headers-$(uname -r)

Im Allgemeinen heißen die Kernel-Header-Pakete linux-header- *, wobei "*" die Version und Variante angibt (generisch, Server usw.).

JanC
quelle
3
Hey, danke, aber könntest du mir sagen, was Generic, Server usw. bedeutet, dass ich schreiben möchte (Kerneltreiber)
Coder
8
Dadurch werden die Header für zukünftige Updates nicht automatisch installiert, und Sie müssen diesen Befehl jedes Mal erneut ausführen. Daher wird empfohlen, stattdessen das Metapaket zu installieren, wie in einer anderen Antwort beschrieben .
Gertvdijk
Hinweis: Damit werden sie nicht in den GCC-Include-Pfad eingefügt, den Sie noch benötigen -I.
Ciro Santilli新疆改造中心法轮功六四事件
1
Hinweis: Damit dies funktioniert, muss die entsprechende deb-srcZeile in vorhanden sein /etc/apt/sources.list.
Vorac
87

Sie können einfach Folgendes eingeben:

sudo apt-get install linux-headers-generic

Wenn Sie sich in einer Desktop-Installation befinden. Apt-get löst die Abhängigkeiten und installiert die richtige Version der Kernel-Header.

Alexandre Teles
quelle
15
und Ubuntu werden sie auch aktualisieren, wenn eine neue Version herauskommt
Csq
3
Oder linux-headers-virtualwenn Sie eine VM in einer Openstack-Instanz ausführen ...
BSchlinker
1
In Debian Wheezy erhalte ich die Fehlermeldung "Das Paket linux-headers-generic ist nicht verfügbar, wird aber von einem anderen Paket
referenziert
4
@IQAndreas Das linux-headers-genericPaket ist Ubuntu-spezifisch. Für Debian sollten Siesudo apt-get install linux-headers-$(uname -r)
Alexandre Teles am
14

Dies sollte ein weiteres Problem abdecken, wenn: der ausgeführte Kernel veraltet ist, dh weder im Repository noch in den Headern vorhanden ist. Am besten aktualisieren Sie den Kernel auf die letzte Version im Repository.

linux-genericist ein Metapaket, um die aktuelle Version des Kernels und seiner Header beizubehalten :

sudo apt-get update
sudo apt-get install linux-generic

Hinweis: Abhängig von Ihrer Ubuntu-Edition sehen Sie, ob Sie linux-lowlatency(Ubuntu Studio) benötigen , linux-signed-genericoder linux-virtual.

user.dz
quelle
1
Keine der anderen Lösungen funktionierte für mich, als ich versuchte, einen Treiber zu installieren. Danke.
Sopalajo de Arrierez
1
ein fast gleichwertiges für debian heißt linux-headers-amd64(für amd64-systeme natürlich)
hanshenrik
1

Oder wenn Sie aptitude installiert haben: sudo aptitude install linux-headers-$(uname -r)

user1527227
quelle
5
Im Wesentlichen das Gleiche.
angulared
-1

Diese Befehle sollten funktionieren:

sudo apt-get dist-upgrade -y
systemctl reboot
sudo apt-get install linux-headers-$(uname -r)
sudo apt-get upgrade linux-headers-$(uname -r)

Zur besseren Anleitung schauen Sie sich dieses Video an

Zen Alex
quelle