Bonjour, je voudrai poser une question.
Voilà je voudrai compiler mon noyau en optimisant le résultat à l'aide de GCC (options -march, ...). J'utilise les sources fournies par la distribution Debian version 3.1, qui sont les sources "Debian" du noyau 2.6.8.
Si vous n'avez pas envie de lire du shell script, vous pouvez aller à la fin du post pour lire la question, peut être saurez vous y répondre. Les citations de Makefile sont juste là pour situer le propos.
Dans le Makefile de premier niveau (répertoire ~/src/linux )
Un moment, j'ai modifié l'initialisation de HOSTCFLAGS et HOSTCXXFLAGS :
Après, il y a un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 HOSTCC = gcc HOSTCXX = g++ HOSTCFLAGS = -march=athlon-xp -m32 -msse3 -pipe -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -m3dnow HOSTCXXFLAGS = -march=athlon-xp -m32 -msse3 -pipe -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -m3dnow
Et puis un moment dans le Makefile, il y a aussi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 MAKEFLAGS += --include-dir=$(srctree)
Et je vois par ci par là des trucs comme
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 # Make variables (CC, etc...) AS = $(CROSS_COMPILE)as LD = $(CROSS_COMPILE)ld CC = $(CROSS_COMPILE)gcc CPP = $(CC) -E AR = $(CROSS_COMPILE)ar NM = $(CROSS_COMPILE)nm STRIP = $(CROSS_COMPILE)strip OBJCOPY = $(CROSS_COMPILE)objcopy OBJDUMP = $(CROSS_COMPILE)objdump AWK = awk GENKSYMS = scripts/genksyms/genksyms DEPMOD = /sbin/depmod KALLSYMS = scripts/kallsyms PERL = perl CHECK = sparse MODFLAGS = -DMODULE CFLAGS_MODULE = $(MODFLAGS) AFLAGS_MODULE = $(MODFLAGS) LDFLAGS_MODULE = -r CFLAGS_KERNEL = AFLAGS_KERNEL = NOSTDINC_FLAGS = -nostdinc -iwithprefix include CPPFLAGS := -D__KERNEL__ -Iinclude \ $(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include) CFLAGS := -Wall -Wstrict-prototypes -Wno-trigraphs \ -fno-strict-aliasing -fno-common AFLAGS := -D__ASSEMBLY__
J'aimerai savoir comment passer les options de compilations à GCC. Faut-il modifier le Makefile directement comme je l'ai fait (voir début), ou faut-il rajouter un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3CFLAGS += -uneoption MAKEFLAGS +=-uneautreoption
à un endroit dans le Makefile (hasardeux, autant que la première méthode, modifier le Makefile du noyau ) ou alors faire avant compilation
Code : Sélectionner tout - Visualiser dans une fenêtre à part CFLAGS += -athlon-xp -msse3 ...
Et qu'est ce que sont les variables HOSTCFLAGS et HOSTCXXFLAGS ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 export CFLAGS="-march=athlon-xp -m32 -msse3 -pipe -Wall -Wstrict-prototypes -O2" export CXXFLAGS="-march=athlon-xp -m32 -msse3 -pipe -Wall -Wstrict-prototypes -O2"
Partager