Linux Treiber Module einzeln kompilieren ?



  • Hallo,

    ich habe eine kleine, wahrscheinlich leicht zu beantwortende Frage:

    Es soll ein Modul, das mir mit Makefile vorliegt kompiliert werden.
    Beim Kompilieren kommt mir eine Meldung, das die eingebundenen .h
    Dateien, wie z.B. die Version.h in diesem Standard Includepfad nicht
    verwendet werden darf.
    Das Modul soll nicht im normalen Kernelerzeugungsvorgang integriert werden,
    da ich es noch ein wenig ändern will. Es soll also die passenden Includes
    vom aktuellen Kernel verwendet werden.

    Wie ändere ich nun diesen Standard Include in einen Benutzerspezifischen ab ?

    Eine andere Frage wäre, ob das dann auch richtig funktionert, wenn ich natürlich vorher
    einmal eine Kernelkompilation durchgeführt habe (wegen der Erzeugung der version.h)
    Ich hoffe, das die Headerdateien dann auch auf diesen einen, meinem, Kernel
    funktioneren und mir eine funktionerendes Modul ausverfen.

    Gruß
    TheNoName



  • Normalerweise sollte die Datei 'version.h' im System vorhanden seine. Und zwar von dem Kernel das gerade benutzt wird. Dann sollte es auch keine probleme geben.



  • Ja, ist vorhanden, jedoch nicht im Include Pfad.

    (Suse 9.1)



  • Um sicher zu gehen dass du die richtige Datei nimmst, kannst du die Dateien aus dem Ordner /lib/modules/<kernel version>/build/includes nehmen.
    Außerdem sollten alle Linux Includes nochmal Unterverzeichniss "linux" im standard Include-Verzeichniss liegen, so dass ein einfaches "#include <linux/module.h>" in den meisten Fällen ausreichen sollte.



  • Nützlicher Lesestoff dafür:

    http://lwn.net/Articles/21823/


Anmelden zum Antworten