System-Linux

Aller au contenu | Aller au menu | Aller à la recherche

Compilation des sources d'un programme

Un petit mémo pour ceux qui aimeraient se lancer dans l'installation d'un logiciel en passant par sa compilation.

La compilation d'un programme consiste à transformer les sources d'un logiciel en binaire executable par un pc. La procédure comporte plusieurs étapes mais elle est universelle pour toutes les distributions Gnu-Linux. Voici comment je mis prend.

Emplacement & Positionnement :

cd /opt
mkdir mon-programme
mkdir SOURCES
cd SOURCES


Téléchargement des sources :

wget http://www.site-farfelu.eu/mon-programme.tar.gz2

Désarchivage des sources :

tar xvjf mon-programme.tar.bz2
ou 
tar xvzf mon-programme.tar.gz

Cela devrait vous créer un dossier mon-programme comme ceci :

/opt/SOURCES/mon-programme


Rentrez dans ce répertoire sources :

cd mon-programme

La vous trouverez des fichiers d'informations qui vous aiderons dans votre démarche d'installation:

README : contient des informations pour la compilation et la configuration. CHANGELOG ou NEWS : contient les nouvelles fonctionnalités par rapport aux versions précédentes. INSTALL : les instructions d'installation et de configuration. TODO : les notes sur les développements futurs.

Début de la compilation :

make distclean Commande magique si vous compilez souvant, permet de faire un peu le ménage et évite des erreurs au ./configure

./configure --help permet d'accéder à l'aide pour voir les options qui vous serons utiles. ./configure crée un fichier de commandes appelé makefile spécifique à l'environnement ( distribution, ressources matérielles, logiciels, bibliothèques, kernel, architecture) et qui sera utilisé plus tard par make pour créer les binaires et autres librairies.

Compilons pour de bon ! :

make check ou make test permet de faire quelques tests mais ces commandes ne sont pas toujours disponible. make compilation, un peu long selon le programme.

Installation et déploiement des fichiers après compilation :

make install copie les fichiers compilés dans l'arborescence du système ou l'arborescence choisi si vous utilisez --prefix=/opt/mon-programme.

Désinstaller le programme :

Parfois vous aurez la possibilité de faire un make uninstall mais pas toujours. Sinon si comme moi vous utilisez toujours la commande ./configure avec l'instruction --prefix=/opt/mon-programme/ il vous suffira de supprimer le dossier mon-programme.

Résumé avec exemple :

cd /opt
mkdir mon-programme
mkdir SOURCES
cd SOURCES
wget mon-programme.tar.bz2
tar xvjf mon-programme.tar.bz2
cd mon-programme
./configure --help
./confugre --prefix=/opt/mon-programme --with-ssl --with-ldap [...] etc....
make
make install
cd /opt/mon-programme

Bien penser à rajouter ceci dans le /etc/profile :

Ce qui nous permettra d'avoir les commandes de votre programme n'importe ou sur votre serveur.

pathmunge  /opt/mon-ptogramme/sbin

Ensuite plus qu'a configurer votre logiciel et l'essayer :

Généralement vous trouverez dans /opt/mon-programme un ou deux repertoire sbin ou bin, la il y aura le ou les deamons (binaires).

cd /opt/mon-programme/sbin
./binaire --help
./binaire -vos options

_init.d pour le démarrage automatique et les commandes d'arrêt / lancement :__

Personnellement je crée un script ou je récupère les scripts d'init caché dans les sources, sinon vous avec le rc.local.

cd /etc/init.d/
vi mon-programme
chmod 660 mon-programme

Configuration de l'environnement et du PATH :

vi /etc/profile 
rajouter ceci :
pathmunge /opt/mon-programme/bin
ou pour Debian et Ubuntu :
:/opt/mon-programme/bin:

note : il est possible qu'il y ai aussi un sbin faites attention à cela.

Pour les librairies :

vi /etc/ld.so.conf
rajouter :
/opt/mon-programme/lib

et taper dans un terminal : ldconfig pour que votre système prennent en compte les nouvelles librairies

et voila :)

Je mettrai bientôt les lignes de compilation que j'utilise sur des programmes comme apache2, php5, openssl, etc... mais c'est pour un autre article :)

Par GanGan | le jeudi, janvier 22 2009 08:05

Commentaires

1. zouzoua

jeudi, janvier 28 2010 | 21:18

Bonjour,
je suis entrain de faire mon PFE de master. je doit faire l'installation d'un serveur DNS est j'ai choisi BIND. mon encadreur ma demandé de faire la compilation d'un noyau Linux (j'utilise Ubunto) pour que la machine ne soit dédié que pour le service DNS dans le but d'assurer plus de sécurité. j'ai déjà compilé mon noyau mais j'ai trouvé une grande problème dans l'étape de choisir les paquets à installé(étape de configuration de noyau). je peut pas faire la distinction entre le rôle de chaque paquets et ceux qui sont essentiels pour mon serveur DNS.
le temps ecoule trés vite et j'ai rien trouvé sur le net.
aidez moi SVP.
MERCI D'AVANCE

2. GanGan

vendredi, janvier 29 2010 | 00:03

c'est pas la bonne démarche à mon sens, la sécurité tu l'as fais dans les fichiers de configuration de bind9, laisse le kernel tranquille :) d'ailleurs tu n'y trouvera rien du tout parlant de dns.