Page suivante Page précédente Table des matières
14. ELF
14.1 Introduction
Depuis ses toutes premières versions, Linux supporte les binaires au format a.out. Le support pour les binaires au format ELF a été intégré dans le noyau et une distribution des bibliothèques partagées au format ELF a été faite. Les avantages du format ELF par rapport au format a.out sont nombreux :
- compatibilité avec les systèmes Unix basés sur SVR4,
- plus grande facilité de création des bibliothèques partagées,
- édition de liens dynamiques lors de l'exécution des programmes,
- support des fonctions
dlopen()
,dlsym()
etdlclose()
Les plus récentes versions des distributions sont basées sur le format ELF. Si votre machine est encore au format a.out, il est grand temps de réinstaller votre machine avec une distribution de Linux plus à jour.
14.2 Utilisation des utilitaires ELF
Les nouvelles versions du compilateur et des utilitaires génèrent des exécutables au format ELF, par défaut. Il est possible de créer des exécutables au format a.out en utilisant l'option
-b i486-linuxaout
lors de l'appel de gcc.Il est désormais assez facile de construire des bibliothèques dynamiques. Les fichiers sources doivent être compilés avec l'option
-fPIC
afin que le code généré puisse s'exécuter à n'importe quelle adresse (les bibliothèques dynamiques sont chargées à des adresses non prévisibles aussi le code doit être indépendant de son adresse physique). L'option-shared
de gcc permet ensuite de générer une bibliothèque dynamique.Par exemple, pour générer une bibliothèque
libtruc.so.1.0
, on utilisera les commandes suivantes :$ gcc -c -fPIC *.c $ gcc -shared -Wl,-soname,libtruc.so.1 -o libtruc.so.1.0 *.o
14.3 Sources d'information sur ELF
Quelques documents concernant ELF sont disponibles sur
ftp.lip6.fr
dans/pub/linux/ELF/doc
. Il s'agit de :
ELF.doc.tar.gz
: la spécification du format ELF,ELF.ps.gz
: un article, écrit par H.J. Lu, décrivant l'implémentation du format ELF dans Linux,move_to_elf.gz
: une description de la transition entre les formats a.out et ELF.Il est également possible d'en apprendre plus sur ELF par les URL suivants :
Page suivante Page précédente Table des matières