OVH Cloud OVH Cloud

Compilation: A que pourquoi ?

5 réponses
Avatar
Jolitorax
Bonjour,

Je cherche à éclaircir un mystère à propos de compilations.

Je lis de ci de là que le fait de compiler ses programmes à partir des
sources peut (dans certains cas), améliorer les performances du programme,
ou régler des problèmes de dépendances que l'on aurait pu avoir en
utilisant des paquets type .deb ou .rpm

Par exemple pour Mozilla sur ma distrib [Mdk 9.0]: mozilla-1.1-10mdk
Quelle différence y aurait il, pour cette version entre:
-Le rpm de chez Mandrake
-Le source de chez Mandrake compilé
-Le source de chez Mozilla compilé

sur une même machine.

D'après les docs Mandrake, ou du moins ce que j'en ai compris, le .configure va
faire une série de test sur la présence des compilateurs, leurs commandes et les


bibliothèques.
Par contre teste t'il la présence de bibliothèque d'une version donnée ou peut
il se débrouiller avec n'importe quelle version d'une bibliothèque du moment que
celle ci est présente ?

Je précise que je ne maîtrise aucun langages de programmation, donc je
recherche des infos susceptible d'être comprise par un novice en la
matière, la distrib m'importe peu.

--
Jean Louis Mas

5 réponses

Avatar
chmod 777
Jolitorax wrote:

Bonjour,


Bonsoir


Je précise que je ne maîtrise aucun langages de programmation, donc je
recherche des infos susceptible d'être comprise par un novice en la
matière, la distrib m'importe peu.


Et bien déjà, ton programme sera compilé avec les optimisations propres à
ton processeur, et non pas pour un 386 ou un pentium I... Si tu as un
processeur plus récent, tu va fatalement gagner des perfos à ce niveau
là...

Lionel

--
Mon adresse EST valide: ne rien supprimer!
J'espère être tranquille grâce à la méthode Paugam

Avatar
Fabrice
Salut,

Un exemple :
Par pur vice j'utilise mutt avec un patch nntp pour lire les news. Je
suis sous Debian Sid. Comme je n'ai pas trouvé de .deb pré-compilé avec
ce patch je compile le programme à la main.
./configure --help me revele plein d'options interessantes
Dans mon cas ./configure --enable-nntp --enable-pop --enable-buffy-size
J'obtiens mon mutt adoré avec les options tordues que je prefere..

En bref 99% de .deb et quelques rares compilations aux petits oignons



--
******************************************************************
Le 15 juin 2004 à 07 heures 19 minutes

Fabrice

******************************************************************
Avatar
Johan
Et bien déjà, ton programme sera compilé avec les optimisations
propres à

ton processeur, et non pas pour un 386 ou un pentium I... Si tu as un
processeur plus récent, tu va fatalement gagner des perfos à ce niveau
là...

Lionel

M'enfin, fatalement, je dirais pas ça...


Avatar
Hervé Riboulot
Le Tue, 15 Jun 2004 00:14:37 +0200, chmod 777 a écrit :

Jolitorax wrote:

Bonjour,


Bonsoir


Bonsoir,

Je précise que je ne maîtrise aucun langages de programmation, donc je
recherche des infos susceptible d'être comprise par un novice en la
matière, la distrib m'importe peu.



Il n'est pas utile de maîtriser un langage de programmation pour lancer
une compilation. Les commandes obéissent à un enchaînement démoniaque
et immuable:

./configure (on lance un programme qui va pour l'essentiel analyser
l'environnement du système pour vérifier les pré requis et préparer
les paramètres utiles). Le ./ signifie que l'on va exécuter le script
configure qui est dans la directory dans laquelle on se positionne.

make (on fabrique tous les éléments utiles pour le programme)

make install (les différents éléments sont logés dans les directories
ad hoc et les liens nécessaires sont créés).


Et bien déjà, ton programme sera compilé avec les optimisations propres à
ton processeur, et non pas pour un 386 ou un pentium I... Si tu as un
processeur plus récent, tu va fatalement gagner des perfos à ce niveau
là...


C'est sans doute un peu rapide. IL faut attentivement lire les fichiers
INSTALL ou README ou autres pour bien identifier les paramètres possibles
et choisir ... Il existe aussi des choix par défaut qui ne concourent pas
nécessairement à l'optimum.

Bref, la lecture est un préalable obligé car au début, était le verbe
p-))

Lionel


Maintenant, entrons dans quelques détails:

-Le rpm de chez Mandrake: un rpm est un ensemble de programmes déjà
compilés, de règles pour les implanter et de contrôles préalables pour
vérifier tous les prérequis. RPM signifie Red Hat Packages Manager,du
nom de son géniteur préféré. Une base de données décrivant les rpm
est constituée, qui sert pour l'exécution des contrôles. Il existe
d'autres systèmes du même acabit dont apt ...

Mandrake a fait le choix rpm. Au-dessus, se greffe urpmi qui intègre une
gestion des sources de rmp et diverses commandes (créer une source, la
mettre à jour, la supprimer, rechercher les packages les plus à jour
dans les sources et tutti quanti (I'm rolling)).

Divers logiciels masquent rpm et en simplifient l'utilisation (ils
permettent de ne pas passer par la ligne de commande): kpackage par
exemple.

Au-dessus de urpmi, on citera le fameux centre de contrôle Mandrake (mcc
qui lance d'autres programmes graphiques (drakrpm ...).

-Le source de chez Mandrake compilé: on lance la compilation avec des
paramètres Mandrake par défaut. Par exemple, Mandrake crée un
répertoire /usr/lib/mozilla/plugins où sont stockés les plugins qui
s'apliquent à toutes les versions Mozilla installées en /usr/lib/mozilla-1.x

Des variables d'environnement permettent de gérer correctement cette
cohabitation en sorte que les plugins sont implantés dans une directory
et une seule et n'ont pas à être dupliqués.

Cette logique n'est pas celle de la modalité suivante d'implantation de
Mozilla:

- Le source de chez Mozilla compilé: ben pareil pas mieux mais en version
Mozilla.


Voilà donc, in a nutshell, comme le disent nos amis anglais, fort
dépités de leur match de mardi soir ...


Avatar
Michel Tatoute

Et bien déjà, ton programme sera compilé avec les optimisations
propres à

ton processeur, et non pas pour un 386 ou un pentium I... Si tu as un
processeur plus récent, tu va fatalement gagner des perfos à ce niveau
là...

Lionel

M'enfin, fatalement, je dirais pas ça...



sur. Perso j'ai jamais ressenti un seul poil de difference, sauf avec le
timer. Mais c'est vrai que ca devrait faire une différence (cas
particulier de mplayer à part).

Michel.