[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [gulliver] Programme pour analyser un système de fichier


From Florent Monnier <fmonnier at linux-nantes dot fr dot eu dot org>
Subject Re: [gulliver] Programme pour analyser un système de fichier
Date Wed, 22 Mar 2006 17:13:59 +0100

> > $ ocaml filesystem-analysis.ml
> > Reference to undefined global `Unix'

Il faut ajouter en argument la librairie contenant le module Unix.
Le fichier portera le même nom en minuscule, avec l'extension .cma pour 
l'interprété:
$ ocaml  unix.cma  filesystem-analysis.ml
(de cette manière la première ligne est simplement ignorée)

> Le script se lance directement comme un exécutable quelconque, pour peu
> que tu aies installé "ocamlscript" [1] dans /usr/local/bin. C'est lui
> qui sert d'interpéteur "#!machin" à la 1ère ligne (et qui ramasse en
> paramètre "unix.cmxa", ce qui provoque le chargement du module incriminé).
>
> [1] http://www.linux-france.org/~dmentre/code/ocamlscript-1.1.tar.gz

Il est également possible de se passer d'ocamlscript d'une autre manière, 
avec une installation OCaml standard on peut remplacer la première ligne :
#!/usr/local/bin/ocamlscript unix.cmxa

par les deux lignes suivantes :
#!/usr/local/bin/ocamlrun ocaml
#load "unix.cma"

La différence c'est que le script sera exécuté en interprété (en bytecode plus 
exactement) et non en compilé.

Les librairies .cmxa sont les modules pour compiler en code natif, 
et les .cma sont les lib/modules que la machine virtuelle peut charger 
dynamiquement (d'où le load).

Lorsque tu mets le path vers l'interpréteur à la première ligne avec #! 
et que tu ajoutes les droits d'exécution au script tu peux le lancer avec :
$ ./filesystem-analysis.ml
et si tu mv le script vers /usr/local/bin/filesystem-analysis ça donne alors :
$ filesystem-analysis

--