Précédent   Forum des professionnels en informatique > Systèmes > Linux > Système
Système Vos questions autour de l'administration système
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/01/2007, 21h26   #1
Membre émérite
 
Inscription : juin 2006
Messages : 1 117
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juin 2006
Messages : 1 117
Points : 989
Points : 989
Par défaut 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 ) 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 ?
kromartien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2007, 03h13   #2
Membre émérite
 
Inscription : juin 2006
Messages : 1 117
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juin 2006
Messages : 1 117
Points : 989
Points : 989
J'ai trouvé la réponse. Merci pour tout. Au revoir

Citation:
To sqeeze a few percentage more performance out of the kernel you can use compiler flags. Run the following from the command line before running make-kpkg kernel-image for an AMD Athlon 32-bit processor.

export CHOST="i686-pc-linux-gnu"
export CFLAGS="-march=athlon-xp -O2 -pipe -fomit-frame-pointer -m3dnow -msse -mfpmath=sse -mmmx"
export CXXFLAGS="${CFLAGS}"

Find out more, some explaination about compiler flags.
http://debian.textbody.com/compile.php

edit : d'accord, je sais comment faire, mais ça ne m'a pas tout expliqué sur les LDFLAGS, CFLAGS, etc. Comment voir les options de compilation s'afficher lors de la compilation ? Quels sont les paramètres à passer à la variable MAKEFLAGS ? Quelqu'un peut m'indiquer un page de man ou un lien pour en apprendre un peu plus sur la compilation en général, et la compilation de Kernel en particulier ?
kromartien est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h34.


 
 
 
 
Partenaires

Hébergement Web