2013-08-28 9 views
14

Ad esempio: di un modulo comune dispositivo MakefileÈ possibile impostare CFLAGS su un modulo Linux del kernel Makefile?

obj-m:=jc.o 

default: 
    $(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) modules 
clean: 
    $(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) modules clean 

considero se posso impostare CFLAGS al file. Quando cambio predefinita sezione per

$(MAKE) -O2 -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) modules 

Ma non ha funzionato.

Qualsiasi aiuto? Molte grazie.

+1

'$$ PWD' può sostituire' $ (shell pwd) ' – eepp

risposta

22

-O2 sarebbe un'opzione per make (o $(MAKE), come lo stai usando) in quello che hai provato. Ovviamente, il compilatore (probabilmente gcc) ha bisogno di questo flag, non make.

Kbuild comprende una variabile make denominata CFLAGS_modulename.o per aggiungere flag C specifici durante la compilazione di questa unità. Nel tuo caso, l'oggetto del modulo sarà jc.o, quindi è possibile specificare:

CFLAGS_jc.o := -O2 

e dovrebbe funzionare. Aggiungi V=1 alle tue linee $(MAKE) per ottenere un output dettagliato e dovresti vedere -O2 quando viene compilato lo jc.c.

È possibile trovare ulteriori informazioni sulla compilazione dei moduli in the official documentation.

12

È inoltre possibile utilizzare

ccflags-y := -O2 

Questa sarà applicata a tutti i file di origine compilati per il modulo con il Makefile. Questo è indirettamente documentato nel link fornito da eepp in Section 4.2