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 :
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
Après, il y a un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
MAKEFLAGS += --include-dir=$(srctree)
Et puis un moment dans le Makefile, il y a aussi
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__
Et je vois par ci par là des trucs comme
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
CFLAGS += -uneoption
MAKEFLAGS +=-uneautreoption
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
CFLAGS += -athlon-xp -msse3 ...
à 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
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"
Et qu'est ce que sont les variables HOSTCFLAGS et HOSTCXXFLAGS ?