[gelöst] Was sind eigentlich die linux-headers-* ?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
TomL

[gelöst] Was sind eigentlich die linux-headers-* ?

Beitrag von TomL » 23.10.2016 11:34:57

Moin

Aus meiner C-Vergangenheit kenne ich noch vom MS-Compiler und der dazugehörenden IDE die CPP-Header (*.h) als typische Deklarations- und Prototype-Dateien, die ich in meine Programme eingebunden habe, beispielsweise für die MFC oder das Windows-API oder auch eigene projektbezogene.... entweder direkt oder eben als vorkompilierten Header. Sind diese linux-headers das gleiche? In meiner Vermutung/Vorstellung hatte ich die Idee, dass das vielleicht die Header-Files für den Linux-Kernel ist, die alle für den Kernel notwendigen Deklarationen und Prototypen enthalten. Nur ist das wirklich so? Ich weiss bisher nur, dass ich neben den build-essentials immer diese Header vorher installieren musste, um meine eigenen Pakete zu kompilieren.

Mein Problem an der Stelle ist, wie komme ich an die Linux-Header ran, wenn der "Installer" (hier das ISO-Image) zwar einen bestimmten Kernel installiert, aber das Repo dafür keine Linux-Header vorhält? Natürlich gehts nicht um Debian selber, sondern um den Debian-Ableger Raspian. Ich habe mir vorgestern den Lite-Installer runtergeladen und installiert.... Kernel-Version 4.4.21. Nur gibts dafür offensichtlich im Raspian-Repo keine Linux-Header. Und wenn ich ehrlich bin, kapiere ich dieses Manko überhaupt nicht.

Mit den im Web gefundenen Lösungen komme ich im Moment überhaupt nicht klar. Es wird z.T. vorgeschlagen, Git zu klonen, den Kernel runterzuladen und selber zu kompilieren. Aber das kann doch nicht wirklich die Lösung sein.

Was enthält dieses Paket "linux-headers" (grob umfasst) in Wirklichkeit? Gibt es ein alternative Möglichkeit diese zu installieren, ohne den Kernel selber kompilieren zu müssen?

Nachtrag:
Ich habe natürlich diese Seite gefunden und könnte das deb-Paket einfach runterladen. Das Problem ist, dass das für mich erst mal nicht nach offiziellem Repo aussieht und ich momentan nicht einschätzen kann, ob Vertrauen ok ist oder eher Misstrauen die bessere Wahl ist....
https://www.niksula.hut.fi/~mhiienka/Rp ... aders-rpi/
Zuletzt geändert von TomL am 25.10.2016 19:55:43, insgesamt 1-mal geändert.

Benutzeravatar
MSfree
Beiträge: 10752
Registriert: 25.09.2007 19:59:30

Re: Was sind eigentlich die linux-headers-* ?

Beitrag von MSfree » 23.10.2016 13:14:38

Bei mir liefert

Code: Alles auswählen

apt-cache search headers
raspberrypi-kernel-headers

Also einfach mit

Code: Alles auswählen

apt-get install raspberrypi-kernel-headers
installieren.

Und ja, das sind die Definitionen und Prototypen für den Linuxkernel. Brauchen tut man das aber nur, wenn man selbst Code kompilieren will, der die Kernelheader braucht, also betriebssystemnahe Geschichten. "Normale" Anwendungsprogramme brauchen die Kernelheader eigentlich nicht.

TomL

Re: Was sind eigentlich die linux-headers-* ?

Beitrag von TomL » 25.10.2016 19:53:29

MSfree hat geschrieben:

Code: Alles auswählen

apt-get install raspberrypi-kernel-headers
Ja, das Paket hatte ich gesehen. Aber ich war völlig unsicher, ob hier generisch das richtige Header-Paket für meinen Kernel ermittelt wird. Und ich hatte nix gefunden, um das zu bestätigen. Für den RasPi ist das ja relativ einfach , mal eben schnell auf nen anderen/aktuellen Kernel upzudaten.
MSfree hat geschrieben:Und ja, das sind die Definitionen und Prototypen für den Linuxkernel. Brauchen tut man das aber nur, wenn man selbst Code kompilieren will, der die Kernelheader braucht, also betriebssystemnahe Geschichten. "Normale" Anwendungsprogramme brauchen die Kernelheader eigentlich nicht.
Das wusste ich z.B. nicht. Ich hatte angenommen, dass die perse immer vorhanden sein müssen, da sie möglicherweise über die direkten Kernel-Belange hinausgehend auch vielleicht noch einen gewissen Pool an Linux-Standards definieren. ... Struct's, Templates, keine Ahnung, was es da heute sonst noch alles gibt. Aber ich probiere es einfach mal ohne. Und wenn "Mecker kommt", dann hoffe ich, dass das Paket von oben generisch ist.......

Danke!

Benutzeravatar
MSfree
Beiträge: 10752
Registriert: 25.09.2007 19:59:30

Re: Was sind eigentlich die linux-headers-* ?

Beitrag von MSfree » 25.10.2016 21:42:39

TomL hat geschrieben:Das wusste ich z.B. nicht. Ich hatte angenommen, dass die perse immer vorhanden sein müssen, da sie möglicherweise über die direkten Kernel-Belange hinausgehend auch vielleicht noch einen gewissen Pool an Linux-Standards definieren. ... Struct's, Templates, keine Ahnung, was es da heute sonst noch alles gibt. Aber ich probiere es einfach mal ohne. Und wenn "Mecker kommt", dann hoffe ich, dass das Paket von oben generisch ist.......
Für diverse Bibliotheken gibt es "dev"-Pakete, die die include-Dateien für die Bibliothek enthalten. Wenn du z.B. Anwendungen kompilieren willst, die die libjpg nutzt, muß das Paket libjpeg-dev installiert werden. Standard-Include-Dateien wie stdio.h werden mit dem Compiler installiert.

Die Kernelheader habe ich bisher nur gebraucht, wenn ich Kernelmodule kompilieren wollte. Ein typisches Beispiel wäre das Nvidiamodul. Aber selbst so kernelnahe Sachen wie iptables kann man in der Regel ohne Kernelheader handhaben. Für meinen Firewall habe ich z.B. eine Daemon geschrieben, der so etwas ähnliches macht wie ein Portknockingdaemon. Da brauchte ich auch keine Kernelheader, libnetfilter-queue-dev hat in dem Fall ausgereicht.

Antworten