2012-04-16 28 views
8

Jak dodać ścieżkę dołączania do pliku makefile modułu jądra? Chcę dołączyć "test_kernel.h" w test_module.c. W „test_kernel.h” mieszka w innym katalogu „inc” Próbowałem w następującym roztworze w moim Makefile, ale to nie działa:Jak dodać ścieżkę dołączania do pliku makefile modułu jądra?

obj-m += test_module.o 

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

Odpowiedz

0

-I jest flaga GCC, a nie flaga Marka. Musisz przekazać zmienną do swojego procesu "sub" Make; Może coś takiego:

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

gdzie CPPFLAGS jest standardową zmienną Producent, który jest używany w domyślnych reguł. Zamiast tego możesz użyć własnej zmiennej i upewnić się, że jest ona poprawnie użyta w pod-make.

Instrukcja obsługi zawiera dodatkowe informacje na temat przekazywania zmiennych między instancjami Make: http://www.gnu.org/software/make/manual/make.html#Variables_002fRecursion.


1. W rzeczywistości jest to również flaga marki, ale dla czegoś zupełnie niezwiązanego.

+0

Zastąpiłem -Iinc przez CFLAGS = inc i to też nie działa. – MOHAMED

+0

@Mohamed KALLEL: Tak, trochę się mylę. Zaktualizowałem swoją odpowiedź. –

+0

nawet z CPPFLAGS = "- Iinc" nie działa – MOHAMED

0

Czy jesteś pewien, że prawidłowo podałeś plik zawarty w twoim pliku?

np .:

#include "inc/something.h" 

zamiast

#include <inc/something.h> 
12

Należy skorzystać z EXTRA_CFLAGS w Makefile. Spróbuj czegoś na tych liniach:

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

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

Patrz rozdział 3.7 Compilation Flags sekcja here.
Mam nadzieję, że to pomoże!

+0

Jest to bardzo przydatne. Po przeczytaniu nowszego dokumentu wygląda na to, że EXTRA_CFLAGS jest już przestarzałe. Możesz użyć ccflags-y = -I $ (PWD)/inc zamiast EXTRA_CFLAGS. Sprawdź rozdział 3.7 [tutaj] (https://www.kernel.org/doc/Documentation/kbuild/makefiles.txt). –

Powiązane problemy