Gemeinsamer Code für Kernel und Userspace

Gemeinsamer Code für Kernel und Userspace

Ich arbeite an einem Linux-Projekt. Ich möchte Code (genauer gesagt eine Struktur) und eine Header-Datei (meine eigene Implementierung) haben, die sowohl für den Kernel als auch für den Benutzerbereich gemeinsam sind. Kann mir jemand sagen, wie ich das implementieren kann?

Antwort1

Die einfache Antwort besteht darin, den Header einfach in beide (separat kompilierten) Teile des Projekts einzubinden. Sie können das tun, wie Sie möchten; eine offensichtliche Verzeichnishierarchie könnte so aussehen:

project/
    userspace_stuff/
    kernal_stuff/
    inc/
       project_namespace/

Dies inc/project_namespaceist optional – Sie können den Header genauso gut in der obersten Ebene platzieren und #include "../myheader.h"in den Quelldateien in den beiden Unterverzeichnissen verwenden. Ich persönlich finde, dass die Verwendung relativer Pfade mit Includes unübersichtlich werden kann, daher verwende ich lieber ein incVerzeichnis und absolute Pfade ( #include <project_namespace/myheader.h>), was durch die Organisation eines Makefiles auf oberster Ebene mit etwas wie: vereinfacht wird.

INC = -Iinc
CFLAGS += $(INC)

verwandte Informationen