Salut à tous,
Si j'ai bien compris, les applications fournies sur les CD de Mandrake
sont destinées à tous les processeurs de la famille i586 - ce qui est tout
à fait normal pour assurer une large compatibilité.
Mais j'ai entendu dire qu'il était possible d'optimiser la compilation
d'un programme pour des processeurs plus évolués que le 586.
Cela m'intéresserait, car d'une part j'utilise un athlon-XP, et d'autre
part la commande `uname -a' me retourne la valeur "i686". J'en déduis que
si je compile un programme à l'aide de la commande make, le programme de
compilation produira un binaire optimisé pour i686, mais pas pour un
athlon-XP.
Donc, ma question est : comment faire en sorte que la compilation prenne
en compte les particularités du processeur ? Faut-il ajouter une option
après la commande make ? (J'ai regardé dans `man make', mais je n'ai pas
trouvé.) Faut-il changer quelque chose dans le makefile ?
Salut à tous,
Si j'ai bien compris, les applications fournies sur les CD de Mandrake
sont destinées à tous les processeurs de la famille i586 - ce qui est tout
à fait normal pour assurer une large compatibilité.
Mais j'ai entendu dire qu'il était possible d'optimiser la compilation
d'un programme pour des processeurs plus évolués que le 586.
Cela m'intéresserait, car d'une part j'utilise un athlon-XP, et d'autre
part la commande `uname -a' me retourne la valeur "i686". J'en déduis que
si je compile un programme à l'aide de la commande make, le programme de
compilation produira un binaire optimisé pour i686, mais pas pour un
athlon-XP.
Donc, ma question est : comment faire en sorte que la compilation prenne
en compte les particularités du processeur ? Faut-il ajouter une option
après la commande make ? (J'ai regardé dans `man make', mais je n'ai pas
trouvé.) Faut-il changer quelque chose dans le makefile ?
Salut à tous,
Si j'ai bien compris, les applications fournies sur les CD de Mandrake
sont destinées à tous les processeurs de la famille i586 - ce qui est tout
à fait normal pour assurer une large compatibilité.
Mais j'ai entendu dire qu'il était possible d'optimiser la compilation
d'un programme pour des processeurs plus évolués que le 586.
Cela m'intéresserait, car d'une part j'utilise un athlon-XP, et d'autre
part la commande `uname -a' me retourne la valeur "i686". J'en déduis que
si je compile un programme à l'aide de la commande make, le programme de
compilation produira un binaire optimisé pour i686, mais pas pour un
athlon-XP.
Donc, ma question est : comment faire en sorte que la compilation prenne
en compte les particularités du processeur ? Faut-il ajouter une option
après la commande make ? (J'ai regardé dans `man make', mais je n'ai pas
trouvé.) Faut-il changer quelque chose dans le makefile ?
Donc, ma question est : comment faire en sorte que la compilation prenne
en compte les particularités du processeur ? Faut-il ajouter une option
après la commande make ? (J'ai regardé dans `man make', mais je n'ai pas
trouvé.) Faut-il changer quelque chose dans le makefile ?
En fait, il faut que le compilateur reçoivent les bonnes options.
Ceci devrait t'intéresser :
http://reviewed.homelinux.org/en/howtocflags.html
En gros, il faut définir les variables environnementales suivantes, dans un
script de login :
export CHOST="i686-pc-linux-gnu"
export CFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer"
export CXXFLAGS="${CFLAGS}"
Néanmoins, ceci n'est pas une solution universelle, et il faut parfois
éditer le makefile, ou indiquer les options sur la ligne de commande à
make, par exemple avec :
make 'CFLAGS = -march=athlon-xp -O3 -pipe -fomit-frame-pointer'
A voir donc selon le cas.
A noter aussi que les meilleures options varient selon le programme à
compiler, il n'est donc pas certain qu'un réglage globale soit *la*
solution.
Donc, ma question est : comment faire en sorte que la compilation prenne
en compte les particularités du processeur ? Faut-il ajouter une option
après la commande make ? (J'ai regardé dans `man make', mais je n'ai pas
trouvé.) Faut-il changer quelque chose dans le makefile ?
En fait, il faut que le compilateur reçoivent les bonnes options.
Ceci devrait t'intéresser :
http://reviewed.homelinux.org/en/howtocflags.html
En gros, il faut définir les variables environnementales suivantes, dans un
script de login :
export CHOST="i686-pc-linux-gnu"
export CFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer"
export CXXFLAGS="${CFLAGS}"
Néanmoins, ceci n'est pas une solution universelle, et il faut parfois
éditer le makefile, ou indiquer les options sur la ligne de commande à
make, par exemple avec :
make 'CFLAGS = -march=athlon-xp -O3 -pipe -fomit-frame-pointer'
A voir donc selon le cas.
A noter aussi que les meilleures options varient selon le programme à
compiler, il n'est donc pas certain qu'un réglage globale soit *la*
solution.
Donc, ma question est : comment faire en sorte que la compilation prenne
en compte les particularités du processeur ? Faut-il ajouter une option
après la commande make ? (J'ai regardé dans `man make', mais je n'ai pas
trouvé.) Faut-il changer quelque chose dans le makefile ?
En fait, il faut que le compilateur reçoivent les bonnes options.
Ceci devrait t'intéresser :
http://reviewed.homelinux.org/en/howtocflags.html
En gros, il faut définir les variables environnementales suivantes, dans un
script de login :
export CHOST="i686-pc-linux-gnu"
export CFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer"
export CXXFLAGS="${CFLAGS}"
Néanmoins, ceci n'est pas une solution universelle, et il faut parfois
éditer le makefile, ou indiquer les options sur la ligne de commande à
make, par exemple avec :
make 'CFLAGS = -march=athlon-xp -O3 -pipe -fomit-frame-pointer'
A voir donc selon le cas.
A noter aussi que les meilleures options varient selon le programme à
compiler, il n'est donc pas certain qu'un réglage globale soit *la*
solution.
On Sun, 26 Oct 2003 15:18:42 +0100, Richard Delorme wrote:Donc, ma question est : comment faire en sorte que la compilation prenne
en compte les particularités du processeur ? Faut-il ajouter une option
après la commande make ? (J'ai regardé dans `man make', mais je n'ai pas
trouvé.) Faut-il changer quelque chose dans le makefile ?
En fait, il faut que le compilateur reçoivent les bonnes options.
Ceci devrait t'intéresser :
http://reviewed.homelinux.org/en/howtocflags.html
En gros, il faut définir les variables environnementales suivantes, dans
un script de login :
export CHOST="i686-pc-linux-gnu"
export CFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer"
export CXXFLAGS="${CFLAGS}"
Néanmoins, ceci n'est pas une solution universelle, et il faut parfois
éditer le makefile, ou indiquer les options sur la ligne de commande à
make, par exemple avec :
make 'CFLAGS = -march=athlon-xp -O3 -pipe -fomit-frame-pointer'
A voir donc selon le cas.
A noter aussi que les meilleures options varient selon le programme à
compiler, il n'est donc pas certain qu'un réglage globale soit *la*
solution.
Attention, tou de même:
pour compîler des applications et être capable de les debugger,
il faut -O2 à la place de -O3 et ne _pas_ mettre -fomit-frame-pointer
D'une façon générale, il est plus prudent de laisser -O2,
car le -O3 peut générer des problèmes vicieux avec certains programmes
pour lesquels il ne faut surtout pas que le compilateur réordonne
les instructions executées.
On Sun, 26 Oct 2003 15:18:42 +0100, Richard Delorme wrote:
Donc, ma question est : comment faire en sorte que la compilation prenne
en compte les particularités du processeur ? Faut-il ajouter une option
après la commande make ? (J'ai regardé dans `man make', mais je n'ai pas
trouvé.) Faut-il changer quelque chose dans le makefile ?
En fait, il faut que le compilateur reçoivent les bonnes options.
Ceci devrait t'intéresser :
http://reviewed.homelinux.org/en/howtocflags.html
En gros, il faut définir les variables environnementales suivantes, dans
un script de login :
export CHOST="i686-pc-linux-gnu"
export CFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer"
export CXXFLAGS="${CFLAGS}"
Néanmoins, ceci n'est pas une solution universelle, et il faut parfois
éditer le makefile, ou indiquer les options sur la ligne de commande à
make, par exemple avec :
make 'CFLAGS = -march=athlon-xp -O3 -pipe -fomit-frame-pointer'
A voir donc selon le cas.
A noter aussi que les meilleures options varient selon le programme à
compiler, il n'est donc pas certain qu'un réglage globale soit *la*
solution.
Attention, tou de même:
pour compîler des applications et être capable de les debugger,
il faut -O2 à la place de -O3 et ne _pas_ mettre -fomit-frame-pointer
D'une façon générale, il est plus prudent de laisser -O2,
car le -O3 peut générer des problèmes vicieux avec certains programmes
pour lesquels il ne faut surtout pas que le compilateur réordonne
les instructions executées.
On Sun, 26 Oct 2003 15:18:42 +0100, Richard Delorme wrote:Donc, ma question est : comment faire en sorte que la compilation prenne
en compte les particularités du processeur ? Faut-il ajouter une option
après la commande make ? (J'ai regardé dans `man make', mais je n'ai pas
trouvé.) Faut-il changer quelque chose dans le makefile ?
En fait, il faut que le compilateur reçoivent les bonnes options.
Ceci devrait t'intéresser :
http://reviewed.homelinux.org/en/howtocflags.html
En gros, il faut définir les variables environnementales suivantes, dans
un script de login :
export CHOST="i686-pc-linux-gnu"
export CFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer"
export CXXFLAGS="${CFLAGS}"
Néanmoins, ceci n'est pas une solution universelle, et il faut parfois
éditer le makefile, ou indiquer les options sur la ligne de commande à
make, par exemple avec :
make 'CFLAGS = -march=athlon-xp -O3 -pipe -fomit-frame-pointer'
A voir donc selon le cas.
A noter aussi que les meilleures options varient selon le programme à
compiler, il n'est donc pas certain qu'un réglage globale soit *la*
solution.
Attention, tou de même:
pour compîler des applications et être capable de les debugger,
il faut -O2 à la place de -O3 et ne _pas_ mettre -fomit-frame-pointer
D'une façon générale, il est plus prudent de laisser -O2,
car le -O3 peut générer des problèmes vicieux avec certains programmes
pour lesquels il ne faut surtout pas que le compilateur réordonne
les instructions executées.
On Sun, 26 Oct 2003 15:18:42 +0100, Richard Delorme wrote:Donc, ma question est : comment faire en sorte que la compilation
prenne en compte les particularités du processeur ? Faut-il ajouter une
option après la commande make ? (J'ai regardé dans `man make', mais je
n'ai pas trouvé.) Faut-il changer quelque chose dans le makefile ?
En fait, il faut que le compilateur reçoivent les bonnes options.
Ceci devrait t'intéresser :
http://reviewed.homelinux.org/en/howtocflags.html
En gros, il faut définir les variables environnementales suivantes, dans
un script de login :
export CHOST="i686-pc-linux-gnu"
export CFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer"
export CXXFLAGS="${CFLAGS}"
Néanmoins, ceci n'est pas une solution universelle, et il faut parfois
éditer le makefile, ou indiquer les options sur la ligne de commande à
make, par exemple avec :
make 'CFLAGS = -march=athlon-xp -O3 -pipe -fomit-frame-pointer'
A voir donc selon le cas.
A noter aussi que les meilleures options varient selon le programme à
compiler, il n'est donc pas certain qu'un réglage globale soit *la*
solution.
Attention, tou de même:
pour compîler des applications et être capable de les debugger,
il faut -O2 à la place de -O3 et ne _pas_ mettre -fomit-frame-pointer
oui, et ajouter -g bien sûr.
cela dit -fomit-frame-pointer est une option d'optimisation assez
efficace, et il est bête de ne pas l'utiliser.D'une façon générale, il est plus prudent de laisser -O2,
car le -O3 peut générer des problèmes vicieux avec certains programmes
pour lesquels il ne faut surtout pas que le compilateur réordonne
les instructions executées.
L'option -O2 réordonne déjà les instructions. -O3, en plus de ce que fait
-O2, met en ligne automatiquement certaines fonctions. Il est vrai que des
bugs dus à l'utilisation de -O3 (ou de -finline-functions) sont
régulièrement trouvés, mais il existe aussi des bugs ailleurs dans gcc.
Utiliser -O2 ne garantit donc pas l'absence de problème. Et si personne
n'utilise gcc avec l'option -O3, cela va être dur de débogguer cette
option de gcc :-)
L'utilisation de -O3 peut aussi ralentir le code, par rapport à -O2. Mais,
bon, j'avais déjà dit que les meilleures options dépendent du programme.
On Sun, 26 Oct 2003 15:18:42 +0100, Richard Delorme wrote:
Donc, ma question est : comment faire en sorte que la compilation
prenne en compte les particularités du processeur ? Faut-il ajouter une
option après la commande make ? (J'ai regardé dans `man make', mais je
n'ai pas trouvé.) Faut-il changer quelque chose dans le makefile ?
En fait, il faut que le compilateur reçoivent les bonnes options.
Ceci devrait t'intéresser :
http://reviewed.homelinux.org/en/howtocflags.html
En gros, il faut définir les variables environnementales suivantes, dans
un script de login :
export CHOST="i686-pc-linux-gnu"
export CFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer"
export CXXFLAGS="${CFLAGS}"
Néanmoins, ceci n'est pas une solution universelle, et il faut parfois
éditer le makefile, ou indiquer les options sur la ligne de commande à
make, par exemple avec :
make 'CFLAGS = -march=athlon-xp -O3 -pipe -fomit-frame-pointer'
A voir donc selon le cas.
A noter aussi que les meilleures options varient selon le programme à
compiler, il n'est donc pas certain qu'un réglage globale soit *la*
solution.
Attention, tou de même:
pour compîler des applications et être capable de les debugger,
il faut -O2 à la place de -O3 et ne _pas_ mettre -fomit-frame-pointer
oui, et ajouter -g bien sûr.
cela dit -fomit-frame-pointer est une option d'optimisation assez
efficace, et il est bête de ne pas l'utiliser.
D'une façon générale, il est plus prudent de laisser -O2,
car le -O3 peut générer des problèmes vicieux avec certains programmes
pour lesquels il ne faut surtout pas que le compilateur réordonne
les instructions executées.
L'option -O2 réordonne déjà les instructions. -O3, en plus de ce que fait
-O2, met en ligne automatiquement certaines fonctions. Il est vrai que des
bugs dus à l'utilisation de -O3 (ou de -finline-functions) sont
régulièrement trouvés, mais il existe aussi des bugs ailleurs dans gcc.
Utiliser -O2 ne garantit donc pas l'absence de problème. Et si personne
n'utilise gcc avec l'option -O3, cela va être dur de débogguer cette
option de gcc :-)
L'utilisation de -O3 peut aussi ralentir le code, par rapport à -O2. Mais,
bon, j'avais déjà dit que les meilleures options dépendent du programme.
On Sun, 26 Oct 2003 15:18:42 +0100, Richard Delorme wrote:Donc, ma question est : comment faire en sorte que la compilation
prenne en compte les particularités du processeur ? Faut-il ajouter une
option après la commande make ? (J'ai regardé dans `man make', mais je
n'ai pas trouvé.) Faut-il changer quelque chose dans le makefile ?
En fait, il faut que le compilateur reçoivent les bonnes options.
Ceci devrait t'intéresser :
http://reviewed.homelinux.org/en/howtocflags.html
En gros, il faut définir les variables environnementales suivantes, dans
un script de login :
export CHOST="i686-pc-linux-gnu"
export CFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer"
export CXXFLAGS="${CFLAGS}"
Néanmoins, ceci n'est pas une solution universelle, et il faut parfois
éditer le makefile, ou indiquer les options sur la ligne de commande à
make, par exemple avec :
make 'CFLAGS = -march=athlon-xp -O3 -pipe -fomit-frame-pointer'
A voir donc selon le cas.
A noter aussi que les meilleures options varient selon le programme à
compiler, il n'est donc pas certain qu'un réglage globale soit *la*
solution.
Attention, tou de même:
pour compîler des applications et être capable de les debugger,
il faut -O2 à la place de -O3 et ne _pas_ mettre -fomit-frame-pointer
oui, et ajouter -g bien sûr.
cela dit -fomit-frame-pointer est une option d'optimisation assez
efficace, et il est bête de ne pas l'utiliser.D'une façon générale, il est plus prudent de laisser -O2,
car le -O3 peut générer des problèmes vicieux avec certains programmes
pour lesquels il ne faut surtout pas que le compilateur réordonne
les instructions executées.
L'option -O2 réordonne déjà les instructions. -O3, en plus de ce que fait
-O2, met en ligne automatiquement certaines fonctions. Il est vrai que des
bugs dus à l'utilisation de -O3 (ou de -finline-functions) sont
régulièrement trouvés, mais il existe aussi des bugs ailleurs dans gcc.
Utiliser -O2 ne garantit donc pas l'absence de problème. Et si personne
n'utilise gcc avec l'option -O3, cela va être dur de débogguer cette
option de gcc :-)
L'utilisation de -O3 peut aussi ralentir le code, par rapport à -O2. Mais,
bon, j'avais déjà dit que les meilleures options dépendent du programme.
Merci pour votre réponse.
Cependant, je n'ai pas encore tout compris. En particulier : qu'est-ce
qu'un "script de login" ? Est-ce un simple script ou y a-t-il une
procédure spéciale pour l'activer ?
Merci pour votre réponse.
Cependant, je n'ai pas encore tout compris. En particulier : qu'est-ce
qu'un "script de login" ? Est-ce un simple script ou y a-t-il une
procédure spéciale pour l'activer ?
Merci pour votre réponse.
Cependant, je n'ai pas encore tout compris. En particulier : qu'est-ce
qu'un "script de login" ? Est-ce un simple script ou y a-t-il une
procédure spéciale pour l'activer ?
Moi j'ai :
Linux gentoo 2.4.22 #6 dim sep 21 13:17:02 CEST 2003 i686 AMD Athlon(tm) XP
^^^^^^
2000+ AuthenticAMD GNU/Linux
Cela renseigne uniquement selon la façon dont le noyau a été compilé.
Moi j'ai :
Linux gentoo 2.4.22 #6 dim sep 21 13:17:02 CEST 2003 i686 AMD Athlon(tm) XP
^^^^^^
2000+ AuthenticAMD GNU/Linux
Cela renseigne uniquement selon la façon dont le noyau a été compilé.
Moi j'ai :
Linux gentoo 2.4.22 #6 dim sep 21 13:17:02 CEST 2003 i686 AMD Athlon(tm) XP
^^^^^^
2000+ AuthenticAMD GNU/Linux
Cela renseigne uniquement selon la façon dont le noyau a été compilé.
Néanmoins, si tu écris ces lignes dans .bashrc
(ou le fichier semblable de ton shell), ce serait fait une fois pour toute
à chaque lancement de bash.
Néanmoins, si tu écris ces lignes dans .bashrc
(ou le fichier semblable de ton shell), ce serait fait une fois pour toute
à chaque lancement de bash.
Néanmoins, si tu écris ces lignes dans .bashrc
(ou le fichier semblable de ton shell), ce serait fait une fois pour toute
à chaque lancement de bash.
J'aimerais bien avoir mon zoli "AMD Athlon(tm) Processor AuthenticAMD"...
Sachant que j'ai un Athlon ThunderBird, que mplayer se compile avec
les options -march=athlon-tbird -mcpu =athlon-tbird et que rajouter
ces options de compile dans mon /usr/src/linux/Makefile à HOSTCFLAGS
ne donne rien du tout ( je vois un pauvre -march=athlon à la compile).
Quelques pistes svp ?
J'aimerais bien avoir mon zoli "AMD Athlon(tm) Processor AuthenticAMD"...
Sachant que j'ai un Athlon ThunderBird, que mplayer se compile avec
les options -march=athlon-tbird -mcpu =athlon-tbird et que rajouter
ces options de compile dans mon /usr/src/linux/Makefile à HOSTCFLAGS
ne donne rien du tout ( je vois un pauvre -march=athlon à la compile).
Quelques pistes svp ?
J'aimerais bien avoir mon zoli "AMD Athlon(tm) Processor AuthenticAMD"...
Sachant que j'ai un Athlon ThunderBird, que mplayer se compile avec
les options -march=athlon-tbird -mcpu =athlon-tbird et que rajouter
ces options de compile dans mon /usr/src/linux/Makefile à HOSTCFLAGS
ne donne rien du tout ( je vois un pauvre -march=athlon à la compile).
Quelques pistes svp ?
Attention, tou de même:
pour compîler des applications et être capable de les debugger,
il faut -O2 à la place de -O3 et ne _pas_ mettre -fomit-frame-pointer
oui, et ajouter -g bien sûr.
cela dit -fomit-frame-pointer est une option d'optimisation assez efficace,
et il est bête de ne pas l'utiliser.
D'une façon générale, il est plus prudent de laisser -O2,
car le -O3 peut générer des problèmes vicieux avec certains programmes
pour lesquels il ne faut surtout pas que le compilateur réordonne
les instructions executées.
L'option -O2 réordonne déjà les instructions. -O3, en plus de ce que fait
-O2, met en ligne automatiquement certaines fonctions. Il est vrai que des
bugs dus à l'utilisation de -O3 (ou de -finline-functions) sont
régulièrement trouvés, mais il existe aussi des bugs ailleurs dans gcc.
Utiliser -O2 ne garantit donc pas l'absence de problème. Et si personne
n'utilise gcc avec l'option -O3, cela va être dur de débogguer cette option
de gcc :-)
C'est plein de bon sens :=)
Attention, tou de même:
pour compîler des applications et être capable de les debugger,
il faut -O2 à la place de -O3 et ne _pas_ mettre -fomit-frame-pointer
oui, et ajouter -g bien sûr.
cela dit -fomit-frame-pointer est une option d'optimisation assez efficace,
et il est bête de ne pas l'utiliser.
D'une façon générale, il est plus prudent de laisser -O2,
car le -O3 peut générer des problèmes vicieux avec certains programmes
pour lesquels il ne faut surtout pas que le compilateur réordonne
les instructions executées.
L'option -O2 réordonne déjà les instructions. -O3, en plus de ce que fait
-O2, met en ligne automatiquement certaines fonctions. Il est vrai que des
bugs dus à l'utilisation de -O3 (ou de -finline-functions) sont
régulièrement trouvés, mais il existe aussi des bugs ailleurs dans gcc.
Utiliser -O2 ne garantit donc pas l'absence de problème. Et si personne
n'utilise gcc avec l'option -O3, cela va être dur de débogguer cette option
de gcc :-)
C'est plein de bon sens :=)
Attention, tou de même:
pour compîler des applications et être capable de les debugger,
il faut -O2 à la place de -O3 et ne _pas_ mettre -fomit-frame-pointer
oui, et ajouter -g bien sûr.
cela dit -fomit-frame-pointer est une option d'optimisation assez efficace,
et il est bête de ne pas l'utiliser.
D'une façon générale, il est plus prudent de laisser -O2,
car le -O3 peut générer des problèmes vicieux avec certains programmes
pour lesquels il ne faut surtout pas que le compilateur réordonne
les instructions executées.
L'option -O2 réordonne déjà les instructions. -O3, en plus de ce que fait
-O2, met en ligne automatiquement certaines fonctions. Il est vrai que des
bugs dus à l'utilisation de -O3 (ou de -finline-functions) sont
régulièrement trouvés, mais il existe aussi des bugs ailleurs dans gcc.
Utiliser -O2 ne garantit donc pas l'absence de problème. Et si personne
n'utilise gcc avec l'option -O3, cela va être dur de débogguer cette option
de gcc :-)
C'est plein de bon sens :=)