Ich schreibe Kernel-Module, um Einheitentest für ein Projekt zu tun. Da ich Quelldateien in das Projekt einbeziehen muss, erwarte ich, absoluten Pfad zu diesen Dateien zu verwenden. Welche würde meine Makefile wie dieseMake Kernel-Modul Makefile erkennen absoluten Pfad für die Quelle?
foo-objs := dir1/src1.o dir1/src2.o
foo-objs += dir2/src3.o src4.o
foo-objs := $(addprefix $(PROJECT_ROOT),$(foo-objs))
...
all:
$(MAKE) -C /lib/modules/"$(shell uname -r)"/build M=$(PWD)
$ (PROJECT_ROOT) machen Variable eine Zustandsaufzeichnung absoluten Pfad des Projekts Wurzel wäre.
Auf diese Weise, glaube ich, ist viel klarer und einfacher, viele Unit-Tests zu warten.
Aber wenn ich make
mache, Kernel-Makefile versuchen, $ (PWD)/$ (PROJECT_ROOT)/src1.o zu kompilieren, die natürlich nicht existiert. Es scheint behandeln alle Objektdatei als relativen Pfad.
Als ein Ergebnis, ich frage mich, ob es eine Möglichkeit gibt, Kernelmakefile für Module absoluten Pfad zu erkennen, vielen Dank.
Vertraut sein mit 'readlink',' realpath' und vordefinierten Kernelvariablen zur Verwendung in * Makefile * s, d. H. '$ (Srctree)'. – 0andriy