IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Caml Discussion :

[OCamL]problème de compilation


Sujet :

Caml

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 26
    Points : 12
    Points
    12
    Par défaut [OCamL]problème de compilation
    bonjour

    sur le terminal, j'essaie de faire une executable de mon fichier.ml

    ~$ ocamlc -o fichier.exe fichier.ml
    et j'obtiens l'erreur suivante :

    File "Partie1.ml", line 1, characters 0-1:
    Syntax error
    alors que mon code n'a pas d'erreur. voici les premières lignes :

    #load "graphics.cma";;
    #load "unix.cma";;
    #load "threads/threads.cma";;
    #directory "+threads";;
    open Graphics;;
    merci

    EDIT : en continuant à chercher, je suis tomber sur ce topic :
    http://www.developpez.net/forums/d38...e-compilation/

    et j'pense que c'est le même problème que lui

    Le #load est une instruction pour le toplevel, l'interpréteur. C'est d'ailleurs pour cela qu'elle a une syntaxe si particulière, parce qu'elle ne fait pas partie du langage. Pour le compilo, c'est remplacé par -pp camlp4o. Il te faut donc la supprimer du code source
    sauf que moi j'en ai besoin du #load ...

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 47
    Points : 39
    Points
    39
    Par défaut
    j'ai essayé en console :

    Mon fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ocamlc unix.cma graphics.cma threads/threads.cma -o test test.ml
    et je n'ai pas d'erreur, mais je suis sous linux.

    PS : il me semble que #xxx c'est pour le top level.

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    ~$ ocamlc graphics.cma unix.cma threads/threads.cma -o fichier.exe fichier.ml
    effectivement ça marche mieux, il n'y a plus que les warnings

    mias ... ça ne crée rien : mon répertoire ne contient le .exe qu'il devrait y avoir

    est-ce que c'est à cause des warnings ?

    et que fait-on du
    # #directory "+threads";;
    ???

    merci

    EDIT : j'ai oublié j'ai aussi cette ligne à la fin des warnings lorsque je tape la ligne de commande ci-dessus

    Unbound value Thread.delay

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 47
    Points : 39
    Points
    39
    Par défaut
    Ton #directory n'est utile (il me semble) que si tu as ton propre répertoire de librairies que tu as créer et que tu veux ajouter.
    Si tu utilises les modules courant alors tu n'en a pas besoin.

    De plus #xxx est a priori du même topo que load, donc pour le top level.

    Quant au Unbound value, il ne connait pas Thread.delay.

    De ce que je sais :

    Les modules :

    – Thread : création et exécution des processus légers.
    – Mutex : les verrous pour l’exclusion mutuelle
    – Condition pour gérer les attentes, et les réveils
    – Event canaux de communication et fonctions de communication. Permet de la programmation fonctionnelle concurrente.

    threads et bytecode :
    – Gérés par la machine virtuelle, donc portables.
    – Ne nécessitent pas un système multithreadé threads et code natif
    – Il faut avoir compilé ocaml avec l’option -with-pthread
    – Nécessite un système qui dispose des threads posix

    La bibliothèque de threads ne fait pas partie de la bibliothèque standard.
    Il y a donc des options de compilation à écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    – Threads et bytecode :
    $ ocamlc -thread unix.cma threads.cma fichiers.ml
     
    – Threads et code natif :
    $ ocamlopt -thread unix.cmxa threads.cmxa fichiers.ml

  5. #5
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Citation Envoyé par leaf blade Voir le message
    EDIT : j'ai oublié j'ai aussi cette ligne à la fin des warnings lorsque je tape la ligne de commande ci-dessus
    C'est pas un warning mais une erreur. Lire les messages du compilateur n'est pas optionnel.

    Lire la documentation officielle, la seule qui soit réellement simple et compréhensible, ne l'est pas non plus.

    http://caml.inria.fr/pub/docs/manual-ocaml/index.html

    Je vous laisse chercher.
    When Colt produced the first practical repeating handgun, it gave rise to the saying God created men, but Colt made them equal.

Discussions similaires

  1. [OCaml] Problème de compilation
    Par HanLee dans le forum Caml
    Réponses: 13
    Dernier message: 01/09/2009, 10h03
  2. Réponses: 4
    Dernier message: 31/08/2009, 19h26
  3. [Ocaml]Problème de compilation
    Par Cooky dans le forum Caml
    Réponses: 7
    Dernier message: 23/03/2007, 20h41
  4. Problème de compilation de la DLL du XMLRad
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 2
    Dernier message: 16/04/2003, 16h46
  5. Réponses: 1
    Dernier message: 27/05/2002, 01h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo