2012-04-16 7 views

Respuesta

0

-I es una bandera del CCG, no una bandera Make. Debe pasar una variable a su proceso de transformación "secundario"; tal vez algo como esto:

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

donde CPPFLAGS es una variable Make estándar que se utiliza en las reglas implícitas. Siéntase libre de usar su propia variable en su lugar, y asegúrese de que se use apropiadamente en la sub-marca.

El manual Hacer da más detalles sobre las variables de comunicación entre instancias de Make: http://www.gnu.org/software/make/manual/make.html#Variables_002fRecursion.


1. En realidad, también es una marca de fabricación, pero para algo completamente relacionado.

+0

Reemplacé el -Iinc por CFLAGS = inc y tampoco funciona – MOHAMED

+0

@MohamedKALLEL: Sí, entendí un poco mal. He actualizado mi respuesta. –

+0

incluso con CPPFLAGS = "- Iinc" no funciona – MOHAMED

0

¿Está seguro de que ha especificado correctamente la inclusión en su archivo?

ej .:

#include "inc/something.h" 

en lugar de

#include <inc/something.h> 
12

Usted debe hacer uso de EXTRA_CFLAGS en su Makefile. Probar algo en estas líneas:

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

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

Véase la sección 3.7 Compilation Flags sección here.
Espero que esto ayude!

+0

Esto es muy útil. Al leer el documento más reciente, parece que EXTRA_CFLAGS está en desuso ahora. Puede usar ccflags-y = -I $ (PWD)/inc en lugar de EXTRA_CFLAGS. Consulte la sección 3.7 [aquí] (https://www.kernel.org/doc/Documentation/kbuild/makefiles.txt). –

Cuestiones relacionadas