Par exemple: Makefile d'un module d'appareil commun
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
Je considère si je peux définir CFLAGS dans le fichier. Lorsque je change la section par défaut en
$(MAKE) -O2 -C /lib/modules/$(Shell uname -r)/build M=$(Shell pwd) modules
Mais ça n'a pas marché.
De l'aide? Merci beaucoup.
-O2
Serait une option pour make
(ou $(MAKE)
, comme vous l'utilisez) dans ce que vous avez essayé. De toute évidence, le compilateur (probablement gcc
) a besoin de cet indicateur, pas make
.
Kbuild comprend une variable make nommée CFLAGS_modulename.o
Pour ajouter des drapeaux C spécifiques lors de la compilation de cette unité. Dans votre cas, votre objet module sera jc.o
, Vous pouvez donc spécifier:
CFLAGS_jc.o := -O2
et ça devrait marcher. Ajoutez V=1
À vos lignes $(MAKE)
pour obtenir une sortie détaillée et vous devriez voir -O2
Lorsque jc.c
Est en cours de compilation.
Vous pouvez trouver plus d'informations sur la compilation des modules dans la documentation officielle .
Vous pouvez aussi utiliser
ccflags-y := -O2
Ceci sera appliqué à tous les fichiers source compilés pour votre module avec le Makefile. Ceci est indirectement documenté dans le lien fourni par eepp dans Section 4.2