Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 23/06/2006, à 16:08

matcheu

[Résolu]Compilation i686

Bonjour,

je voudrais savoir par curiosité s'il est possible de compiler les sources d'un programme en l'optimisant pour une architecture i686.

un truc du genre:

$ ./configure --i686
ou
$ make --i686

Merci

Dernière modification par matcheu (Le 24/06/2006, à 15:25)

Hors ligne

#2 Le 23/06/2006, à 16:58

ondex

Re : [Résolu]Compilation i686

$ export CFLAG="-march=i686"
$ export CXXFLAG="-march=i686"
$ ./configure
$ make

Tu peux en profiter pour rajouter dans les variables d'autres options de compilation (-O3, -fomit-frame-pointer, ...) mais soit prudent, certaines options peuvent avoir des effets indésirables (instabilité). Je te conseil de rechercher un peu sur le net pour avoir des exemples.

Dernière modification par ondex (Le 23/06/2006, à 16:59)

Hors ligne

#3 Le 23/06/2006, à 17:15

Cathou

Re : [Résolu]Compilation i686

La liste des options de gcc pour intel et amd

La liste des options pour optimiser le code

Mais attention, je rejoins ondex pour te recommander de te documenter un minimum sur ce qu'il est judicieux de choisir.
Pour cela tu peux aller par exemple sur les forums gentoo wink

Tu peux positionner des variables d'environnement avant de lancer make, ou bien éditer directement le Makefile.

Prends garde aux noms: tu pourras trouver CFLAGS et CXXFLAGS, ou bien plus rarement les mêmes noms sans S à la fin.

#4 Le 24/06/2006, à 15:25

matcheu

Re : [Résolu]Compilation i686

Merci,
ça fonctionne en faisant un "./configure --help j'ai vu que l'on pouvait faire ça directement :

$ ./configure CXXFLAGS="-mcpu=pentium4 -march=pentium4 -O3"

puis lors du "make" j'ai remarqué qu'il appliquait bien ces flags. Donc c'est gagné !
Par contre je ne peux rien affirmer quant aux performances !
A titre d'information j'ai utilisé ça pour installer fluxbox 1.0rc.

Merci pour vos réponses

Hors ligne

#5 Le 24/06/2006, à 18:27

kaworu

Re : [Résolu]Compilation i686

en tant qu'utilisateur Gentoo, je peux te dire que si tu compile 1 programme, tu risque vraiment pas d'améliorer les performances..
Il faut compiler les dépendences et le système entier pour que ce soit plus cohérent, et même là tu risque pas de voir de différence notable.
Essaye de te faire ton kernel perso (un vanilla par exemple) en virant tout ce que t'as pas besoin (parce que par défaut y'a tout), vire tous les démons inutiles, et là ton système sera plus rapide/performant/stable..
L'optique de Gentoo c'est un système minimal mais complet , tout ce qu'il te faut mais UNIQUEMENT ce qu'il te faut, et c'est en ça que c'est optimisé. La compilation permet le choix des USE qui contribuent grandement à cette optique, les CFLAGS et CXXFLAGS sont secondaires (de mon pt de vue hein).

Les extrémistes [troll]gentoo[/troll] disent que compiler soi-même pour son architecture c'est-le-top-et-c'est-plus-mieux-parce-que-c'est-optimisé, tandis que les extrémistes de l'autre coté [troll]Debian[/troll] disent que ça-change-rien-de-toute-façon-et-tu-perd-du-temps.

Disont que deux choses sont sûr :
1) ça te prend plus de temps de compiler toi-même (vraiment bcp plus de temps, OOo c'est 6h par exemple avec un 1.7Ghz Centrino (flux c'est 3mins, mais xorg c'est 1h))
2) compiler soi-même  (si on joue pas avec le feu pour les CFLAGS et CXXFLAGS, car le mieux est l'ennemi du bien), ça peut pas être moins bien que précompilé pour i386

Perso j'utilise Gentoo sur mon laptop pour ça flexibilité (c'est une méta-distrib) et ses optimisations en tout genre qui (AMHA) rend mon système bien plus rapide (pourtant KDE) et j'utilise Ubuntu sur ma tour pour ça facilité d'installation/entretient/utilisation (par rapport à Gentoo).

EDIT: ton flag mcpu est inutile je crois car :
-march=pentium-4 : va optimiser le code compilé pour cette architecture
-mcpu=pentium-3 : va garder pa possibilité d'executer le code compiler pour cette architecture.

donc un "-mcpu=pentium-3 -march=pentium-4" va compiler optimisé pour p4 mais garde la compatibilité p3 (et tout ce qui est entre p3 et p4 vu la rétrocompatibilité).
dans "-march=pentium-4 -mcpu=pentium-4" le mcpu est inutile, car il est certain que si tu compile optimisé pour pentium-4, il y'aura compatibilité avec pentium-4
^____^

Enjoy !

Dernière modification par kaworu (Le 24/06/2006, à 18:51)


"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."

Hors ligne

#6 Le 24/06/2006, à 18:34

Link31

Re : [Résolu]Compilation i686

@kaworu : tu as globalement raison, mais ça dépend quand même du programme. Les optimisations de la compilation peuvent avoir beaucoup d'influence : par exemple entre une même démo 3D compilée sans optimisations et compilée en -O3, je gagne facilement 300 fps. Enfin j'imagine que tous les jeux sont précompilés en -O3...

Hors ligne

#7 Le 24/06/2006, à 18:41

kaworu

Re : [Résolu]Compilation i686

Link31 a écrit :

@kaworu : tu as globalement raison, mais ça dépend quand même du programme. Les optimisations de la compilation peuvent avoir beaucoup d'influence : par exemple entre une même démo 3D compilée sans optimisations et compilée en -O3, je gagne facilement 300 fps. Enfin j'imagine que tous les jeux sont précompilés en -O3...

Tu as raison, je pensais à un appli lambda style xmms. ^_____^
EDIT: maintenant 03 ou 02, c'est presque une question de goût. globalement 03 donne un binaire qui contient moins d'instructions donc plus rapide à l'execution mais plus lourd en mémoire (je pense au déroulement des boucles -funroll-loops) donc plus lent à charger..
Il faut aussi savoir que certaines appli forcent le O2, par exemple Xorg (qui est graphique!).

Dernière modification par kaworu (Le 24/06/2006, à 18:46)


"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."

Hors ligne

#8 Le 24/06/2006, à 18:50

ondex

Re : [Résolu]Compilation i686

C'est sûr que sur un jeux on peut voir une différence. Par contre, fluxbox... lol

Je demande à voir si le démarrage est plus rapide (0.24sec au lieux de 0.25)

Hors ligne