2012-04-16 9 views
8

Wie füge ich einen Include-Pfad für Kernelmodul-Makefile hinzu? Ich möchte "test_kernel.h" in test_module.c einschließen. die „test_kernel.h“ residiert in anderem Verzeichnis „inc“ ich in der folgenden Lösung in meinem Makefile versucht, aber es funktioniert nicht:Wie füge ich einen Include-Pfad für Kernelmodul-Makefile hinzu

obj-m += test_module.o 

test_module: 
    $(MAKE) -C "$(LINUX_DIR)" -Iinc $(MAKE_OPTS) modules 

Antwort

0

-I ist eine GCC Flagge, keine Make-Flagge. Sie müssen eine Variable an Ihren "sub" Make Prozess übergeben; vielleicht so etwas wie folgt aus:

$(MAKE) -C "$(LINUX_DIR)" CPPFLAGS="-Iinc" $(MAKE_OPTS) modules 

wo CPPFLAGS ein Standard-Make-Variable ist, die in den impliziten Regeln verwendet wird. Fühlen Sie sich frei, stattdessen Ihre eigene Variable zu verwenden, und stellen Sie sicher, dass sie in der Sub-Marke verwendet wird.

Das Make-Handbuch enthält weitere Details zum Übertragen von Variablen zwischen Instanzen: http://www.gnu.org/software/make/manual/make.html#Variables_002fRecursion.


1. Eigentlich ist es auch ein Make-Flag, aber für etwas völlig unabhängig.

+0

ich ersetzt die -Iinc durch CFLAGS = inc und es funktioniert nicht – MOHAMED

+0

@MohamedKALLEL: Ja, ich habe das etwas falsch. Ich habe meine Antwort aktualisiert. –

+0

sogar mit CPPFLAGS = "- Iinc" funktioniert nicht – MOHAMED

0

Sind Sie sicher, dass Sie das Include korrekt in Ihrer Datei angegeben haben?

z.B .:

#include "inc/something.h" 

statt

#include <inc/something.h> 
12

Sie sollten Verwendung von EXTRA_CFLAGS in Ihrem Makefile machen. Probieren Sie etwas auf diesen Linien:

obj-m += test_module.o 
EXTRA_CFLAGS=-I$(PWD)/inc 

test_module: 
    $(MAKE) -C "$(LINUX_DIR)" $(MAKE_OPTS) modules 

Siehe Abschnitt 3.7 Compilation Flags Abschnitt here.
Hoffe, das hilft!

+0

Dies ist sehr nützlich. Wenn Sie das neuere Dokument lesen, scheint EXTRA_CFLAGS jetzt veraltet zu sein. Sie können ccflags-y = -I $ (PWD)/inc anstelle von EXTRA_CFLAGS verwenden. Überprüfen Sie Abschnitt 3.7 [hier] (https://www.kernel.org/doc/Documentation/kbuild/makefiles.txt). –