Cette page a pour but d'expliquer les différentes manières d'installer un logiciel sous Unix/Linux et de montrer pourquoi on ne peut pas faire n'importe quoi quand il s'agit d'utiliser des binaires.
C'est quoi des sources et des binaires ?
Les sources
Lors de la phase de développement d'un logiciel quelconque, les développeurs (c'est à dire les personnes qui créent le logiciel) utilisent un langage de programmation, en général le C ou C++. Ce langage ressemble à ce petit exemple:
static void rs_stop(struct tty_struct *tty)
{
struct async_struct *info = (struct async_struct *)tty->driver_data;
unsigned long flags;
if (serial_paranoia_check(info, tty->name, "rs_stop"))
return;
local_irq_save(flags);
if (info->IER & UART_IER_THRI) {
info->IER &= ~UART_IER_THRI;
/* disable Tx interrupt and remove any pending interrupts */
custom.intena = IF_TBE;
mb();
custom.intreq = IF_TBE;
mb();
}
local_irq_restore(flags);
}
Les sources sont donc des simples fichiers textes qui comportent les lignes de codes en C.
On parle de sources au pluriel car il est très fréquent (voire généralisé) que le code nécessaire pour un logiciel soit divisé en plusieurs fichiers textes.
Ces sources doivent permettre de définir des fonctions suffisament générales de manière à pouvoir être compilées par tous les compilateurs différents (cf paragraphes sur la compilation).
Les binaires
Les binaires sont les fichiers qui vont être utilisés directement par le processeur de la machine.
Comme son nom l'indique ce sont des fichiers composés uniquement de "0" et de "1" (code binaire donc).
Ce langage du binaire doit donc être adapté au langage utilisé par le processeur qui diffère d'une architecture à l'autre (x86, Sparc, Mac, Sun, Solaris, IRIX ...).
Pour illustrer la chose prenons l'exemple d'un chinois qui parle à un français (qui n'a jamais appris le chinois, cela va de soi), le français ne comprendra pas ce que lui demande le chinois; c'est pareil pour le processeur vis à vis des instructions que lui transmettra le binaire si le binaire n'est pas adapté au processeur.
Par ailleurs l'autre nom du binaire est l'exécutable (plus connu sous environnement windows).
Mais alors pourquoi un exécutable windows ne fonctionne-t-il pas sur la même machine une fois rebootée sous linux ?
Pour la simple et bonne raison que les binaires en plus des informations pour le processeur contiennent aussi des appels aux fonctions internes des OS (lecture d'un fichier, demande de mémoire vive) et que ces appels sont différents suivant les OS.
La compilation
La compilation est l'acte qui permet de transformer des sources (du texte donc) en binaires exploitables par le couple processeur/OS.
Le compilateur permet donc de créer ces binaires adaptés au processeur ainsi qu'à l'OS.
Pourquoi utiliser des sources au lieu des binaires ?
Il peut y avoir 2 manières d'installer un programme sur son ordinateur:
- utiliser un binaire téléchargé à partir du net par exemple
- récupérer des sources et les compiler soi-même
Le problème avec la première solution est que le binaire doit avoir été compilé pour la même architecture que celle où l'on souhaite installer le logiciel en question.
Pour des architectures pas très communes il est parfois difficile de trouver des binaires adaptés.
La deuxième solution permet donc de construire des binaires parfaitement adaptés à l'architecture en question car le compilateur que l'on utilise sait traduire le langage C (ou C++) en commandes binaires pour le couple processeur/OS utilisé.
Comment reconnaître son OS ?
Spécial dédicace à Pauline
Vous voilà donc en face d'une superbe station de travail avec comme but d'installer un programme super important pour la suite de votre stage, genre mozilla-thunderbird pour poser vos questions diverses (elec, bio, méca, info, ...) ou tout simplement raconter votre vie sur tde.
"uname -m" vous donnera le type de la machine
"uname -o " vous donnera l'OS








