Menu1 Menu2 Menu3 Menu4 Menu5 Menu6

Imaginons que vous avez tout compris aux cours précédents : vous savez alors écrire un programme en langage OCaml. Là, si vous avez enregistré votre programme dans un fichier (c'est mieux si vous voulez le réutiliser !), vous êtes capable de l'utiliser en lançant la boucle interactive et en entrant le code. Mais votre but est de diffuser ce programme, donc de le rendre autonome : n'importe qui doit pouvoir l'utiliser sur son ordinateur, sans avoir forcément Caml ! Comme je le disais dans l'introduction, vous allez donc devoir compiler ce programme, c'est-à-dire demander la traduction du langage OCaml en langage informatique de base, directement reconnu par l'ordinateur. Voici comment faire.

Sommaire :
Les compilateurs de Caml
Installation de l'environnement de travail
Compiler un module
Compiler un programme

I) Les compilateurs de Caml
Ca se complique déjà. Caml dispose en fait de plusieurs compilateurs différents, je vais vous en présenter quatre. D'abord, vous avez ocamlc et ocamlopt. ocamlc produit ce qu'on appelle du code-octet et ocamlopt du code natif. La différence : le code natif est un code plus basique que le code-octet, il contient des instructions plus fondamentales. Si les deux codes existent, c'est pour une raison simple. Le code natif permet d'obtenir des instructions qui correspondent directement au processeur et au système d'exploitation utilisés. Si vous compilez votre programme avec Windows 2000 sur Pentium II, vous obtiendrez un code exécutable sur les autres ordinateurs ayant la même configuration, mais qui risque de buger sur les autres machines. Le code-octet enlève cet inconvénient : il contient des instructions à peu près universelles, et peut donc être exécuté sur beaucoup plus de machines (c'est ce qu'on appelle la portabilité). En revanche, quand il s'exécute, il y a une petite phase de traduction (l'ordinateur qui reçoit le programme doit traduire le code-octet en code natif adapté) qui ralentit un peu le programme.
Pour résumer, ocamlopt produit donc un code plus rapide à exécuter mais ocamlc produit un code qui s'exécutera sur plus d'ordinateurs. Ocaml vous propose deux autres compilateurs : ocamlc.opt et ocamlopt.opt. En fait, il sont très semblables aux deux autres (ocamlc.opt produit aussi du code-octet et ocamlopt.opt donne du code natif) mais sont un peu plus rapides pour compiler (en fait, ces deux compilateurs sont écrits en code natif, alors que les deux premiers sont en code-octet).
Dans la suite, je vous présenterai l'utilisation du compilateur ocaml, car c'est celui que j'utilise moi-même.

II) Installation de l'environnement de travail
D'abord, il vous faut vérifier votre installation. Si vous travaillez sous Linux ou Mac OS, si vous avez bien installé OCaml, vous avez normalement tout ce qu'il vous faut. Mais si vous êtes sous Windows, il vous manque quelque chose, une chose que Microsoft n'a pas estimé utile de fournir avec Windows : un environnement de programmation, c'est-à-dire un ensemble de fonctionnalités qui permettent de créer des programmes. Nous allons arranger ça.
Si vous avez téléchargé OCaml sur le site officiel, on vous a proposé au moins deux versions : une basée sur les outils MinGW et une sur les outils Microsoft. Je vous conseille d'utiliser la première version, car les outils demandés sont gratuits. Vous allez donc devoir installer sur votre machine un autre logiciel, qui offrira à Caml ce dont il a besoin. Ce logiciel s'appelle Cygwin. Allez sur la page http://www.cygwin.com, qui est en anglais pour votre plus grand plaisir, et cliquez sur un des nombreux « Install Cygwin now » pour télécharger le fichier « setup.exe ». Ce fichier est un installateur : une fois téléchargé, vous devrez rester connecté(e) à Internet et l'utiliser pour installer en ligne le logiciel. Quand vous l'exécuterez, vous aurez le choix entre une installation directement en ligne (le programme téléchargera les fichiers et installera Cygwin en même temps) ou un téléchargement seul à la suite duquel vous devrez relancez l'installateur en choisissant une installation à partir de la source locale (plus besoin alors d'accès Internet). C'est la solution que je préfère : si la connexion Internet plantait, ça ne menacerait l'installation.
Vous trouvez que cette histoire de télécharger un installateur qui téléchargera lui-même est compliquée ? A première vue, c'est vrai. Mais l'intérêt de cette méthode est que si par la suite vous souhaitez modifier les options d'installation de Cygwin, vous pourrez réutiliser l'installateur qui mettera à jour Cygwin en téléchargeant les nouveaux fichiers, sans avoir à tout refaire.
Important : Au moment où l'installateur vous demandera de sélectionner les packages à installer, vous devrez ajouter à ceux qu'on vous propose les packages de la catégorie « MinGW » ainsi que, dans la catégorie « Devel », ceux qui commencent par « gcc ».
Une fois que Cygwin a été installé, vous allez le tester. Pour cela, lancez le programme. Vous avez normalement une fenêtre qui s'ouvre, avec comme logo un triangle vert dans un C noir, et des lignes de texte sur fond noir (si vous connaissez MS-DOS, ça doit vous rappeler des souvenirs). En fait, Cygwin sert à lancer sous Windows un environnement de type Linux : vous pourrez utiliser par l'intermédiaire de Cygwin des commandes Linux bien qu'il ne soit pas installé (rassurez-vous, ça ne met pas en danger votre Windows). Explorez votre disque dur. Dans le répertoire d'installation de Cygwin (par exemple « C:/Cygwin »), vous avez un dossier « home/uti » où uti est votre nom d'utilisateur Windows, par exemple Administrateur. Créez un fichier quelconque dans ce répertoire. Puis retournez dans Cygwin et tapez simplement la commande « ls » puis Entrée. ls est une commande Linux qui sert à lister les fichiers d'un répertoire, et vous devriez voir apparaître le nom du fichier que vous venez de créer. C'est le cas ? Vous avez correctement installé Cygwin et vous allez enfin pouvoir commencer !

III) Compiler un module
Nous allons ici utiliser un exemple. Vous pouvez télécharger le fichier test.ml. C'est un petit programme que j'ai écrit, vous reconnaîtrez peut-être le jeu du "C+/C-" : l'ordinateur choisit un nombre au hasard, ici entre 1 et 200, et vous devez le trouver à l'aide de ses indices "C'est plus" ou "C'est moins". Téléchargez ce fichier et placez-le dans votre disque C.
Vous remarquerez que je n'ai pas chargé le module Graphics alors que je l'utilise dans le fichier : c'est parce que la commande #load... ;; ne s'utilise que dans la boucle interactive. Ici, nous devrons à la place indiquer au compilateur qu'il doit utiliser le module Graphics.
Ouvrez Cygwin si vous êtes sous Windows ; si vous êtes sous un autre système, ouvrez l'invite de commandes classique (le terminal pour Linux par exemple). Vous allez taper « ocamlc -c C:/test.ml ». Cela ordonne à l'ordinateur d'utiliser le programme ocamlc avec l'argument « -c C:/test.ml », ce qui veut dire qu'il va devoir compiler le fichier indiqué. Normalement, vous voyez apparaître sur votre disque C deux fichiers, test.cmo et test.cmi, qui forment un module : vous pouvez les diffuser et toute personne ayant OCaml pourra utiliser votre jeu en chargeant le module (#load "graphics.cma"; #load "test.cmo";) puis en utilisant la fonction Test.programme. Notez qu'il pourra d'ailleurs utiliser cette fonction dans un autre programme (vous avez fait un module comme un autre), par exemple pour intégrer votre jeu dans une compilation. Notez aussi qu'on laisse ici à l'utilisateur le soin de charger le module graphique, ce qu'on aurait pu éviter.
Vous pouvez maintenant diffuser ce module afin que d'autres programmeurs utilisent les fonctions qui s'y trouvent. Si vous voulez faciliter le travail des autres programmeurs, il vaut mieux accompagner votre module des informations suivantes :
   - La liste des types, valeurs et fonctions contenues dans le module
   - Pour chaque fonction, son typage et son action (c'est-à-dire des précisions sur le sens de ses arguments et une description du résultat)
   - Si vous voulez être honnête, indiquez enfin les éventuels effets secondaires des fonctions
Ce sont d'ailleurs les trois types d'information que vous trouvez dans le manuel de référence de Caml.

IV) Compiler un programme
Pour faire un programme, vous allez d'abord compiler votre fichier en module (voir paragraphe précédent). Puis dans Cygwin ou dans votre invite de commandes, tapez « ocamlc -o C:/test.exe graphics.cma C:/test.cmo ». Cette commande demande à exécuter ocamlc. Le paramètre -o prog.exe sert à spécifier un nom à votre programme (vous pouvez l'omettre, Caml créera alors un programme avec un nom par défaut). Puis viennent les deux modules servant à compiler : graphics.cma et C:/test.cmo. Ces deux modules doivent être dans l'ordre d'utilisation (le deuxième utilise des fonctions du premier, si vous les mettez dans l'autre ordre la compilation ne narchera pas). Vous obtenez alors un programme que vous pouvez exécuter. Seulement, il n'est pas encore autonome : il marchera sur les ordinateurs possédant OCaml.
Pour faire un autonome, c'est très simple, il suffit de rajouter l'option -custom : « ocamlc -o C:/test.exe graphics.cma C:/test.cmo -custom ». Vous avez obtenu un programme en code-octet, directement exécutable sur les ordinateurs même s'ils n'ont ni Cygwin ni OCaml !

> Haut de la page