Compilation de kernel - Makefile de premier niveau.
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:
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:
1 2
|
MAKEFLAGS += --include-dir=$(srctree) |
Et puis un moment dans le Makefile, il y a aussi
Code:
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:
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:
CFLAGS += -athlon-xp -msse3 ...
à un endroit dans le Makefile (hasardeux, autant que la première méthode, modifier le Makefile du noyau :question: ) ou alors faire avant compilation
Code:
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 ?