Compilation de projets Open Source...

Proteus666

Membre enregistré
8 Avril 2004
2
0
En tant que Macmaniaque, je me suis essayé à L'Open Source pour profiter de l?UNIX sous-jacent à Mac OS X: Darwin. Mais, après avoir téléchargé de quelques programmes, j'ai essayé de les exécuter. ARGGGGh, aucun moyen d'y parvenir !!! Comment, avec des fichiers tels que Configure, Makefile, Install, et j'en passe est-il possible de les compiler afin d'obtenir un exécutable reconnu par le système ? Si je les ouvre, rien d'autre qu'un texte que le Terminal ne parvient pas à reconnaître surgit ! Aidez-moi svp !
 
Pour exécuter une commande tape son nom dans le terminal
ex:
$ ./configure
$ ./make
$ etc
$ Command not found.
laugh.gif
 
si t'as un tar.gz, d'abord lire le README...en général il faut:
1)./configure
ça check si tu as tout ce qu'il faut sur le système pour compiler
2)make
ça effectue la compilation
3)make install
c'est à faire en root, cela correspond à copier les fichier générés aux bons endroits dans le système.
4)taper ta commande dans le terminal
3bis) ne pas faire make install, mais executer le binaire sans l'installer, pour cela ./nomdubinaire
 
Il existe un fichier Makefile adapté pour les sources de l'application que tu as téléchargée.
Le fait de lancer la commande make, en réalité exécute les commandes décrites dans le fichier Makefile.

Ces commandes en langage make sont décrites de la façon suivante

objectif : dependances1

dependances1 : dependances2

Si tu observes le fichier Makefile tu verras tout les objectifs décrits ainsi que leur dépendances

L'objectif par défaut correspond à la commande make sans argument ( en général compile et linkage de tous les sources )

- make install, va résoudre l'objectif install:
qui en général va copier les fichiers programme au bon endroit, mettre à jour les library, et autre comme l'aura défini le concepteur de l'application
- make all, va résoudre l'objectif all:
mais tu peux trouver l'objectif doc: ou n'importe quel autre.

En principe le concepteur donne quelques explications dans le fichier INSTALL,

Pour ce qui est de configure, c'est une surcouche qui va générer le fichier Makefile à partir de squelettes (config.in, etc...), et des caractéristiques de ta machine ( version de l'OS, library installées, et je ne sais quoi d'autre).

A la fin de la commande make install, ton application va pouvoir être lancée, mais seul la doc te précisera comment.

En général c'est le nom du programme principal (par exemple les sources de gimp, lancer avec la commande gimp), mais tes sources peuvent correspondre à un greffon d'un autre programme et donc tu ne pourras sans doute pas l'executer en tant que tel, mais au travers d'une autre application.

Mais tout est dans la doc, qui elle-même peut etre un objectif du make file.
La documentation se retrouve au moins à l'état de manuel après la procedure d'installation
exemple
$ man gimp
ou
$ man ftp

Parfois la lecture du Makefile est nécessaire pour comprendre une chose absente de la documentation;
voir le manuel make avec la commande
$man make
mais c'est assez hard.

Et puis tu peux aussi trouver de l'info sur les sites du projet, ils sont donnés en général dans le fichier README

Voilà j'espère que j'aurais répondu à quelques unes de tes interrogations
bonsoir
 
Tant qu'à faire, voici ma méthode de travail quand je compile.

J'ai un dossier « Developpement » quelque part, pour la suite, on va considérer qu'il est dans mon dossier « Maison » (~/Developpement/). Ensuite, je crée un dossier destiné à contenir mes scripts de configuration, à savoir : ~/Developpement/configure-scripts. J'y crée un modèle qui va me servir pour tous les projets qui ne méritent pas d'options spéciales. Je l'ai appelé « baseconfig ». Pour le créer, jetez un œil ici. Si on décide d'utiliser le Terminal et Emacs, ça donne :
<font color="green">mkdir -p ~/Developpement/configure-scripts
chmod 700 ~/Developpement/
cd ~/Developpement/configure-scripts
emacs baseconfig</font>
On y met :<font class="small">Code:</font><hr /><pre>cat ./myconfig
./configure --prefix=/mysw --sysconfdir=/etc --with-includes=/sw/include --with-libraries=/sw/lib</pre><hr />Le --with-includes=/sw/include --with-libraries=/sw/lib est pour ceux qui ont installé Fink. Pour quitter Emacs ctrl-X ctrl-S puis ctrl-X ctrl-C. Ensuite il faut rendre le script exécutable.
chmod +x baseconfig

Imaginons que je veuille compiler Lynx à partir de l'archive compressée en « bz2 ». Ça donne :
cd ~/Developpement/ - on va dans le dossier « Developpement ».
mkdir lynx - création du dossier.
cd lynx - on va dans le dossier « lynx ».
curl -O ]http://lynx.isc.org/release/lynx2.8.5.tar.bz2</font> - téléchargement.
bunzip2 -c lynx2.8.5.tar.bz2 | tar xvf - - extraction des sources.
cd lynx2-8-5 - on va dans le dossier des sources.
ln -s ../../configure-scripts/baseconfig myconfig - création d'un lien symbolique nommé « myconfig ».
./myconfig - équivalent de ./configure mais avec mes options.
make - compilation.
su - on passe en root.
Passwd: - mot de passe de root (pour l'activer, voir ici).
make install - installation proprement dite.
exit - on sort de root.

Une fois installé, il n'y a plus lieu de garder les sources, l'archive téléchargée suffit.
cd .. - on remonte dans le dossier « lynx ».
rm -rf lynx2-8-5/ - on efface les sources et le résultat de la compilation.

Autre exemple, compilation de GnuPG à partir de l'archive compressée en « gz ». Comme il y a des options supplémentaires à mettre, on commence par préparer le script de configuration.
<font color="green">cd ~/Developpement/configure-scripts
cp baseconfig gnupg
emacs gnupg</font>
On y met :<font class="small">Code:</font><hr /><pre>cat ./myconfig
./configure --prefix=/mysw --sysconfdir=/etc --with-includes=/sw/include --with-libraries=/sw/lib --disable-asm --with-libiconv-prefix=/mysw</pre><hr />Pour quitter Emacs ctrl-X ctrl-S puis ctrl-X ctrl-C. Ensuite :
cd ~/Developpement/ - on va dans le dossier « Developpement ».
mkdir gnupg - création du dossier.
cd gnupg - on va dans le dossier « gnupg ».
curl -O ]ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-1.2.4.tar.gz</font> - téléchargement.
tar xvzf gnupg-1.2.4.tar.gz - extraction des sources.
cd gnupg-1.2.4 - on va dans le dossier des sources.
ln -s ../../configure-scripts/gnupg myconfig - création d'un lien symbolique nommé « myconfig ».
./myconfig - équivalent de ./configure mais avec mes options.
make - compilation.
su - on passe en root.
Passwd: - mot de passe de root.
make install - installation proprement dite.
exit - on sort de root.
Évidemment, on revire les sources.

Quelques explications sur les options de base.
--prefix=/mysw Tous mes projets sont installés dans un dossier nommé « /mysw ». Ça permet de garder les originaux du système sans le polluer. Mais il faut alors mettre les bons dossiers dans le « PATH » pour que le mac puisse trouver les nouvelles commandes. À ne faire qu'une fois :
su - on passe en root.
Passwd: - mot de passe de root.
emacs /etc/profile - on édite le fichier /etc/profile et on remplace la ligne PATH par
Bloc de code:
PATH="/mysw/sbin:/mysw/bin:/sw/sbin:/sw/bin:/bin:/sbin:/usr/bin:/usr/sbin"
On quitte Emacs comme d'habitude, puis on quitte le Terminal et on le relance.
--sysconfdir=/etc Ça c'est plus contestable.
wink.gif
J'aime avoir mes fichiers de config dans /etc. À manier avec précaution si vous compilez des projets qui on une version déjà présente dans Mac OS X. Je ne mets pas les manuels dans /usr/share/man pour cette raison et ManOpen permet d'ajouter des emplacements pour les pages de manuel.

Quant on veut recompiler un projet parce qu'il y a une nouvelle version, il suffit de télécharger les sources, de faire le bon lien « myconfig » et vous êtes sûr de recompiler avec les bonnes options mises patiemment au point auparavant.

Voilà.
zen.gif


À+