Précédent Index Suivant

Exécutables autonomes

Un exécutable autonome (standalone) est un exécutable indépendant de l'installation d'Objective CAML sur la machine utilisée. D'une part, cela facilite la diffusion d'une application sous forme binaire. D'autre part si l'on installe une nouvelle version d'Objective CAML à un emplacement différent, cet exécutable continuera à fonctionner.

Le compilateur natif produit automatiquement des exécutables autonomes. En revanche, sans l'option -custom, le compilateur de code-octet produit un exécutable qui a besoin de l'interprète ocamlrun. Soit le fichier exemple.ml suivant :
let f x = x + 1;;
print_int (f 18);;
print_newline();;
La commande suivante produit le fichier exemple.exe :
ocamlc -o exemple.exe t.ml
Ce fichier d'une taille de 8ko peut être exécuté en le passant comme paramètre à l'interprète de code-octet :
$ ocamlrun exemple.exe
19
L'interprète exécute les instructions de la machine Zinc contenues dans le fichier exemple.exe et utilise le chemin d'accès standard aux bibliothèques.

Sous Unix, la première ligne du fichier exemple.exe contient la localisation de l'interprète de code-octet, par exemple :
#!/usr/local/bin/ocamlrun
Cette indication permet de lancer directement l'exécution du fichier exemple.exe par l'interprète de commandes. Son exécution lance la commande décrite par cette première ligne. Il faut donc bien trouver la commande ocamlrun à l'emplacement indiqué, sinon le message d'erreur Command not found apparaîtra et l'exécution sera arrêtée.

La même compilation avec l'option -custom produit un exécutable autonome de nom exauto.exe :
ocamlc -custom -o exaauto.exe t.ml
Sa taille est d'environ 85Ko car il contient, outre le code-octet du programme, l'interprète de ce code-octet. Ce fichier peut être exécuté directement ou copié sur une autre machine (de même architecture et de même système) pour être exécuté.

Warning


La taille du fichier d'un exécutable ne correspond pas à la taille du processus de son exécution. En effet le fichier ne tient pas compte de l'allocation dynamique de mémoire du programme (9).



Précédent Index Suivant