Die Header-Dateien definieren eine Schnittstelle:Sie geben an, wie die Funktionen in der Quelldatei definiert sind.
Sie werden verwendet, damit ein Compiler überprüfen kann, ob die Verwendung einer Funktion korrekt ist, da die Funktionssignatur (Rückgabewert und Parameter) in der Header-Datei vorhanden ist. Für diese Aufgabe ist die eigentliche Implementierung der Funktion nicht erforderlich.
Sie könnten dasselbe mit den vollständigen Kernelquellen tun, aber Sie werden viele unnötige Dateien installieren.
Beispiel:wenn ich die Funktion verwenden möchte
int foo(double param);
In einem Programm muss ich nicht wissen, wie die Implementierung von foo
ist ist, ich muss nur wissen, dass es einen einzelnen Parameter akzeptiert (double
) und gibt eine ganze Zahl zurück.
Wie bereits erwähnt, definieren Header-Dateien Schnittstellen zu Funktionen sowie Strukturen, die von Programmen verwendet werden.
Im Fall der Kernel-Header-Dateien befinden sich diese Funktionen und Strukturen im Kernel selbst.
Wenn Sie einen vollständigen Kernel erstellen, benötigen Sie natürlich die vollständigen Quelldateien, nicht nur die Header. Wenn Sie jedoch einen Gerätetreiber oder ein anderes ladbares Modul kompilieren, das sich mit dem Kernel verbindet, benötigen Sie nur die Header-Dateien, können also Platz sparen, indem Sie nicht die vollständigen Quellen installieren.
Die Trennung von Paketen, sodass Sie nur die Header-Dateien installieren können, ist teilweise historisch, da der Unterschied in der Festplattennutzung früher eine wichtige Überlegung war, als die Festplatten kleiner waren. Heutzutage wäre es keine große Überlegung mehr, den gesamten Quellcode (unnötigerweise) auf der Festplatte zu haben.
Der Begriff Header-Dateien stammt vom C Programmiersprache, die zum Schreiben des Linux-Kernels verwendet wird.
Um es von einem sehr hohen Niveau zu erklären...
In C benötigen Sie eine Forward-Deklaration einer Funktion, bevor Sie sie verwenden. Mit anderen Worten, eine Beschreibung der Funktion, ihrer Parameter und der Art der zurückgegebenen Daten. Es ist üblich, alle Forward-Deklarationen in einer einzigen Datei namens Header abzulegen . Quellcodedateien für andere Programme können dann include
werden diesen Header und haben Zugriff auf alle Funktionen in der resultierenden ausführbaren Programmdatei, sobald sie kompiliert wurde.
Die Linux-Header-Dateien sind alle .h
Dateien, die die Funktionen enthalten, die der Linux-Kernel bereitstellt und die von anderen Programmen aufgerufen werden können.