En informatique et en technologies de l'information, un fichier exécutable, parfois (par métonymie) un programme, ou simplement un exécutable est un fichier contenant un programme et identifié par le système d'exploitation en tant que tel. Le chargement d'un tel fichier entraîne la création d'un processus dans le système, et l'exécution du programme, par opposition au fichier de données qui doit d'abord être interprété par un programme pour prendre sens.
Traditionnellement, le programme contenu dans un fichier exécutable contient lui-même des instructions codées dans un langage compréhensible par un processeur. Cependant, dans une acceptation plus générale, n'importe quel fichier contenant des instructions destinée à un interpréteur ou une machine virtuelle, comme des scripts ou du bytecode, peut aussi être considéré comme un exécutable.
Formats de fichiers exécutables
Au sens large, un fichier exécutable peut prendre deux formes[1] :
- un fichier binaire, c'est le cas pour :
- les programmes en langage machine, compilés (ou assemblés) pour un type de système donné, et dont les instructions sont exécutées directement par le processeur,
- les programmes en bytecode, compilés pour une architecture générique et devant être soit interprétés dans le cadre d'une machine virtuelle, soit « sur-compilés » vers un langage machine au moment de l'exécution ;
- un fichier texte, c'est le cas pour les scripts, dont l'exécution est réalisée par un interpréteur (shell, perl, etc.).
Propriétés
Les propriétés des fichiers binaires exécutables sont intimement liées au type de système d'exploitation.
Macintosh
Sous les versions de Mac OS antérieures à Mac OS X, les différents types de fichiers (y compris les exécutables) sont identifiés par des informations stockées dans le fichier : le type et le créateur.
- Le type indique la nature du fichier par un code alphanumérique à quatre positions (par exemple : 'APPL' pour une application, 'INIT' pour une extension système — sorte de patch désactivable au démarrage —, ou 'cDEV' pour un tableau de bord — application utilitaire utilisable depuis n'importe quel contexte applicatif).
- Le créateur est un code de même format permettant, pour une application, de l'identifier de manière unique, et pour un fichier, de retrouver l'application permettant de l'ouvrir. Ces informations ont donc la même fonction que les extensions de noms de fichiers, tout en étant transparentes à l'utilisateur.
Dans Mac OS X, Apple a repris le même mode d'identification des catégories de fichiers, mais ajoute de manière systématique une gestion des extensions de noms de fichiers à la Unix, ce système d'exploitation étant basé sur un Unix.
UNIX
Sous Unix, l'utilisateur doit avoir la permission pour pouvoir exécuter un fichier binaire exécutable. Aucune extension particulière n'est nécessaire pour qu'un fichier binaire exécutable puisse être lancé. Les programmes exécutables sont au format a.out, COFF ou ELF.
Un langage de script indique généralement au système sa nature grâce à un en-tête appelé Shebang, suivi de l'interpréteur permettant de l'exécuter.
DOS/Windows
Les fichiers exécutables sous DOS/Windows doivent porter un suffixe (extension) spécifique. En ligne de commande, cette extension est implicite pour lancer le programme (s'il y a plusieurs possibilités, le premier fichier trouvé est utilisé).
Les programmes précompilés possèdent l'extension .exe ou .com. Depuis Windows NT, ils sont au format PE ; auparavant ils étaient au format NE — New Executable File Format, « new » faisant référence à CP/M, et aux fichiers .com —).
Il existe aussi des exécutables comprenant l'extension .APP utilisés par GEM.
Les scripts possèdent le suffixe .bat ou .cmd et sont interprétés par le programme COMMAND.COM (MS-DOS) ou cmd.exe (Windows NT et dérivés).
Cygwin
Cygwin permet l'exécution de programmes MS-DOS/Windows et Unix de façon transparente pour l'utilisateur (pas de distinction visible au niveau de l'appel).
Cela pose parfois quelques problèmes lorsque des programmes « de même nom » sont disponibles à la fois au format MS-DOS/Windows et Unix : par exemple appeler more en ligne de commande, peut (selon la configuration) appeler soit more (Unix), soit more.com (MS-DOS, à cause de l'ajout automatique de l'extension .com, .exe ou .bat).
Génération d'un fichier exécutable
Les scripts sont éditables avec un simple éditeur de texte, mais peuvent aussi être générés automatiquement par d'autres programmes.
Les binaires sont issus d'un procédé de compilation (mettant généralement en jeu un compilateur, un assembleur, un éditeur de liens…) à partir de codes sources (modifiables par un éditeur de texte ou un environnement de développement intégré).
Notes et références
Références
- Violaine Louvet et Franck Pérignon, Des sources à l'exécutable : la chaine de compilation, (lire en ligne)
Liens externes
- (en) « Order of Precedence in Locating Executable Files » sur Aide et Support Microsoft
- (en) « The Windows NT Command Shell » sur TechNet Microsoft, voir : « The PATH Command and PATHEXT Variable »