Il s'agit de la commande ocamlopt.opt qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS
PROGRAMME:
Nom
ocamlopt - Le compilateur de code natif OCaml
SYNOPSIS
ocamlopt [ Options ] nom de fichier ...
ocamlopt.opt (mêmes choix)
DESCRIPTION
Le compilateur de code natif OCaml hautes performances ocamlopt(1) compile les fichiers source OCaml pour
fichiers d'objet de code natif et liez ces fichiers d'objet pour produire des exécutables autonomes.
Le manuel de formation ocamlopt(1) commande a une interface en ligne de commande très proche de celle de ocamlc(1). Ce
accepte les mêmes types d'arguments et les traite séquentiellement :
Les arguments se terminant par .mli sont considérés comme des fichiers source pour les interfaces des unités de compilation.
Les interfaces précisent les noms exportés par les unités de compilation : elles déclarent des noms de valeurs avec
leurs types, définir des types de données publics, déclarer des types de données abstraits, etc. Du
filet x.mli, le ocamlopt(1) le compilateur produit une interface compilée dans le fichier x.cmi. Les
l'interface produite est identique à celle produite par le compilateur de bytecode ocamlc (1).
Les arguments se terminant par .ml sont considérés comme des fichiers source pour les implémentations d'unités de compilation.
Les implémentations fournissent des définitions pour les noms exportés par l'unité, et contiennent également
expressions à évaluer pour leurs effets secondaires. A partir du fichier x.ml, le ocamlopt(1)
le compilateur produit deux fichiers : x.o, contenant du code objet natif, et x.cmx, contenant
des informations supplémentaires pour la mise en relation et l'optimisation des clients de l'unité. Le compilé
la mise en œuvre doit toujours être désignée sous le nom x.cmx (lorsqu'on lui donne un fichier .o,
ocamlopt(1) suppose qu'il contient du code compilé à partir de C, pas d'OCaml).
L'implémentation est vérifiée par rapport au fichier d'interface x.mli (s'il existe) comme décrit
dans le manuel de ocamlc (1).
Les arguments se terminant par .cmx sont considérés comme du code objet compilé. Ces fichiers sont liés
ensemble, avec les fichiers objets obtenus en compilant les arguments .ml (le cas échéant), et
la bibliothèque standard OCaml, pour produire un programme exécutable en code natif. L'ordre en
quels arguments .cmx et .ml sont présentés sur la ligne de commande est pertinent : compilation
les unités sont initialisées dans cet ordre au moment de l'exécution, et c'est une erreur de liaison d'utiliser un
composant d'une unité avant de l'avoir initialisée. Par conséquent, une donnée xLe fichier .cmx doit venir
avant tous les fichiers .cmx faisant référence à l'unité x.
Les arguments se terminant par .cmxa sont considérés comme des bibliothèques de code objet. Une telle bibliothèque packs
en deux fichiers lib.cmxa et lib.aa ensemble de fichiers objets (fichiers .cmx/.o). Les bibliothèques sont construites
avec ocamlopt -a (voir la description du -a option ci-dessous). Les fichiers objets contenus
dans la bibliothèque sont liés en tant que fichiers .cmx normaux (voir ci-dessus), dans l'ordre spécifié lorsque
la bibliothèque a été construite. La seule différence est que si un fichier objet contenu dans un
bibliothèque n'est référencée nulle part dans le programme, alors elle n'est pas liée.
Les arguments se terminant par .c sont transmis au compilateur C, qui génère un fichier objet .o.
Ce fichier objet est lié au programme.
Les arguments se terminant par .o ou .a sont supposés être des fichiers objet C et des bibliothèques. Elles sont
liés au programme.
La sortie de la phase de liaison est un fichier exécutable Unix standard. Il n'a pas besoin
ocamlrun(1) courir.
ocamlopt.opt est le même compilateur que ocamlopt, mais compilé avec lui-même au lieu d'avec
le compilateur de bytecode ocamlc(1). Ainsi, il se comporte exactement comme ocamlopt, mais compile
plus rapide. ocamlopt.opt n'est pas disponible dans toutes les installations d'OCaml.
OPTIONS
Les options de ligne de commande suivantes sont reconnues par ocamlopt (1).
-a Construisez une bibliothèque (fichier .cmxa/.a) avec les fichiers objets (fichiers .cmx/.o) donnés sur le
ligne de commande, au lieu de les lier dans un fichier exécutable. Le nom du
la bibliothèque doit être définie avec le -o option.
If -cclib or -ccopt les options sont passées sur la ligne de commande, ces options sont
stocké dans la bibliothèque .cmxa résultante. Ensuite, en se liant à cette bibliothèque
ajoute automatiquement le -cclib et -ccopt options comme si elles avaient été fournies
sur la ligne de commande, à moins que le -noautolink option est donnée. De plus, un
sous-chaîne $CAMLORIGINE Dans un -ccopt les options seront remplacées par le chemin complet vers
la bibliothèque .cma, à l'exclusion du nom de fichier.
-nomabs
Afficher les noms de fichiers absolus dans les messages d'erreur.
-pas Dump des informations détaillées sur la compilation (types, liaisons, appels de queue, etc.).
Les informations pour le fichier src.ml est mis dans le fichier src.annot. Dans le cas d'un type
erreur, videz toutes les informations déduites par le vérificateur de type avant l'erreur. Les
srcLe fichier .annot peut être utilisé avec les commandes emacs données dans emacs/caml-types.el à
afficher les types et autres annotations de manière interactive.
-bin-annot
Dump des informations détaillées sur la compilation (types, liaisons, appels de queue, etc.)
au format binaire. Les informations pour le fichier src.ml est mis dans le fichier src.cmt. Dans
en cas d'erreur de type, vider toutes les informations déduites par le vérificateur de type avant
l'erreur. Les fichiers d'annotations produits par -bin-annot contenir plus d'informations
et sont beaucoup plus compacts que les fichiers produits par -pas.
-c Compiler uniquement. Supprimer la phase de liaison de la compilation. Les fichiers de code source sont
transformés en fichiers compilés, mais aucun fichier exécutable n'est produit. Cette option est
utile pour compiler les modules séparément.
-cc comp
Utilisez le comp comme l'éditeur de liens C appelé pour construire l'exécutable final et comme le C
compilateur pour compiler les fichiers source .c.
-cclib -lnomlib
Réussir l' -lnomlib option à l'éditeur de liens. Cela fait que la bibliothèque C donnée est
liés au programme.
-ccopt option
Passez l'option donnée au compilateur C et à l'éditeur de liens. Par exemple, -ccopt -Ldir
oblige l'éditeur de liens C à rechercher des bibliothèques C dans le répertoire dir.
-compact
Optimisez le code produit pour l'espace plutôt que pour le temps. Cela se traduit par une plus petite
mais des programmes légèrement plus lents. La valeur par défaut est d'optimiser la vitesse.
-config
Imprimer le numéro de version de ocamlopt(1) et un résumé détaillé de ses
configuration, puis quittez.
-pour-pack chemin-module
Générez un fichier objet (fichiers .cmx et .o) qui peut ensuite être inclus en tant que sous-
module (avec le chemin d'accès donné) d'une unité de compilation construite avec -paquet.
Par exemple, ocamlopt -pour-pack P -c A.ml générera des fichiers a.cmx et ao qui
peut être utilisé plus tard avec ocamlopt -paquet -o P.cmx a.cmx.
-g Ajoutez des informations de débogage lors de la compilation et de la liaison. Cette option est obligatoire dans
afin de produire des traces de pile lorsque le programme se termine sur un non capturé
exception (voir ocamlrun(1)).
-i Faire en sorte que le compilateur affiche tous les noms définis (avec leurs types inférés ou leurs
définitions) lors de la compilation d'une implémentation (fichier .ml). Aucun fichier compilé (.cmo
et .cmi) sont produits. Cela peut être utile pour vérifier les types déduits par
le compilateur. De plus, étant donné que la sortie suit la syntaxe des interfaces, cela peut aider
en écrivant une interface explicite (fichier .mli) pour un fichier : il suffit de rediriger le standard
sortie du compilateur dans un fichier .mli et éditez ce fichier pour supprimer tout
déclarations de noms non exportés.
-I annuaire
Ajouter le répertoire donné à la liste des répertoires recherchés pour l'interface compilée
fichiers (.cmi), fichiers de code objet compilé (.cmx) et bibliothèques (.cmxa). Par défaut,
le répertoire courant est recherché en premier, puis le répertoire standard de la bibliothèque.
Les répertoires ajoutés avec -I sont recherchés après le répertoire courant, dans l'ordre dans
qu'ils ont été donnés sur la ligne de commande, mais avant la bibliothèque standard
annuaire. Voir aussi l'option -nostdlib.
Si le répertoire donné commence par +, il est pris par rapport à la bibliothèque standard
annuaire. Par exemple, -I +compilateur-libs ajoute le sous-répertoire bibliothèques-compilateur of
la bibliothèque standard au chemin de recherche.
-impl nom de fichier
Compiler le fichier nom de fichier comme fichier d'implémentation, même si son extension n'est pas
.ml.
-en ligne n
Réglez l'agressivité de l'inline sur n, Où n est un entier positif. En précisant
-en ligne 0 empêche toutes les fonctions d'être alignées, sauf celles dont le corps est
plus petit que le site d'appel. Ainsi, l'incorporation n'entraîne aucune extension de la taille du code. Les
agressivité par défaut, -en ligne 1, permet d'intégrer des fonctions légèrement plus grandes,
résultant en une légère expansion de la taille du code. Des valeurs plus élevées pour le -en ligne option
faire en sorte que des fonctions de plus en plus grandes deviennent candidates à l'incorporation, mais cela peut entraîner
dans une augmentation sérieuse de la taille du code.
-intf nom de fichier
Compiler le fichier nom de fichier comme fichier d'interface, même si son extension n'est pas .mli.
-intf-suffixe un magnifique
Reconnaître les noms de fichiers se terminant par un magnifique en tant que fichiers d'interface (au lieu de la valeur par défaut
.mli).
-garder-locs
Conservez les chaînes de documentation dans les fichiers .cmi générés.
-garder-locs
Conservez les emplacements dans les fichiers .cmi générés.
-Étiquettes
Les étiquettes ne sont pas ignorées dans les types, les étiquettes peuvent être utilisées dans les applications et étiquetées
les paramètres peuvent être donnés dans n'importe quel ordre. C'est la valeur par défaut.
-linkall
Forcer tous les modules contenus dans les bibliothèques à être liés. Si ce drapeau n'est pas
donné, les modules non référencés ne sont pas liés. Lors de la construction d'une bibliothèque (-a drapeau),
régler le -linkall flag force tous les liens ultérieurs de programmes impliquant ce
bibliothèque pour lier tous les modules contenus dans la bibliothèque.
-pas d'alias-deps
N'enregistrez pas les dépendances pour les alias de module.
-no-app-fonction
Désactive le comportement applicatif des foncteurs. Avec cette option, chaque foncteur
l'application génère de nouveaux types dans son résultat et applique deux fois le même foncteur
au même argument donne deux structures incompatibles.
-noassert
Ne compilez pas les contrôles d'assertion. Notez que la forme spéciale affirmer non est toujours
compilé car il est typé spécialement. Ce drapeau n'a aucun effet lors de la liaison
fichiers déjà compilés.
-noautolink
Lors de la liaison de bibliothèques .cmxa, ignorez -cclib et -ccopt options potentiellement
contenus dans les bibliothèques (si ces options ont été données lors de la construction du
bibliothèques). Cela peut être utile si une bibliothèque contient des spécifications incorrectes de C
bibliothèques ou options C ; dans ce cas, lors de l'enchaînement, réglez -noautolink et passer le
Corrigez les bibliothèques C et les options sur la ligne de commande.
-nodynlien
Autoriser le compilateur à utiliser certaines optimisations qui ne sont valides que pour le code qui est
jamais déconnecté.
-nostdlib
Ne pas ajouter automatiquement le répertoire de bibliothèque standard à la liste des répertoires
recherché des fichiers d'interface compilés (.cmi), des fichiers de code objet compilés (.cmx),
et les bibliothèques (.cmxa). Voir aussi l'option -I.
-pas d'étiquettes
Ignorez les étiquettes non facultatives dans les types. Les étiquettes ne peuvent pas être utilisées dans les applications, et
l'ordre des paramètres devient strict.
-o fichier-exec
Spécifiez le nom du fichier de sortie produit par l'éditeur de liens. Le nom de sortie par défaut
est a.out, conformément à la tradition Unix. Si la -a l'option est donnée, spécifiez
le nom de la bibliothèque produite. Si la -paquet option est donnée, spécifiez le nom de
le fichier objet compressé produit. Si la -obj-sortie l'option est donnée, spécifiez le
nom du fichier de sortie produit. Si la -partagé option est donnée, spécifiez le nom
du fichier de plugin produit. Cela peut également être utilisé lors de la compilation d'une interface ou
fichier d'implémentation, sans lien, auquel cas il définit le nom du cmi ou
cmo, et définit également le nom du module sur le nom du fichier jusqu'au premier point.
-ouvrir module
Ouvre le module donné avant de traiter les fichiers d'interface ou d'implémentation. Si
plusieurs -ouvrir sont données, elles sont traitées dans l'ordre, comme si le
déclarations ouvertes! module 1;; ... ouvert! moduleN;; ont été ajoutés en haut de chaque fichier.
-obj-sortie
Faire en sorte que l'éditeur de liens produise un fichier objet C au lieu d'un fichier exécutable. C'est
utile pour envelopper le code OCaml comme une bibliothèque C, appelable depuis n'importe quel programme C. Le nom de
le fichier objet de sortie doit être défini avec le -o option. Cette option peut également être
utilisé pour produire une bibliothèque partagée/dynamique compilée (extension .so).
-p Générez du code supplémentaire pour écrire les informations de profil lorsque le programme est exécuté. Les
les informations de profil peuvent ensuite être examinées avec le programme d'analyse gprof(1). le
-p L'option doit être donnée à la fois au moment de la compilation et au moment de la liaison. Objet de liaison
fichiers non compilés avec -p est possible, mais aboutit à un profilage moins précis.
Voir le gprof(1) page de manuel pour plus d'informations sur les profils.
Support complet pour gprof(1) n'est disponible que pour certaines plates-formes (actuellement : Intel
x86/Linux et Alpha/Digital Unix). Sur d'autres plateformes, le -p l'option résultera
dans un profil moins précis (aucune information de graphique d'appel, seulement un profil de temps).
-paquet Construire un fichier objet (fichiers .cmx et .o) et son interface compilée associée
(.cmi) qui combine les fichiers objet .cmx donnés sur la ligne de commande, les rendant
apparaissent comme des sous-modules du fichier .cmx de sortie. Le nom du fichier .cmx de sortie
doit être donné avec le -o option. Par exemple,
ocamlopt -paquet -o P.cmx A.cmx B.cmx C.cmx génère des fichiers compilés P.cmx, Po et
P.cmi décrivant une unité de compilation comportant trois sous-modules A, B et C,
correspondant au contenu des fichiers objets A.cmx, B.cmx et C.cmx. Ces
le contenu peut être référencé comme PA, PB et PC dans le reste du programme.
Les fichiers objet .cmx combinés doivent avoir été compilés avec le
-pour-pack option. Dans l'exemple ci-dessus, A.cmx, B.cmx et C.cmx doivent avoir été
compilé avec ocamlopt -pour-pack P.
Plusieurs niveaux d'emballage peuvent être obtenus en combinant -paquet avec -pour-pack. Voir
Le manuel de formation OCaml utilisateur Manuel, chapitre "Compilation en code natif" pour plus de détails.
-pp commander
Faire en sorte que le compilateur appelle le donné commander comme préprocesseur pour chaque source
déposer. La sortie de commander est redirigé vers un fichier intermédiaire, qui est
compilé. S'il n'y a pas d'erreurs de compilation, le fichier intermédiaire est supprimé
après.
-ppx commander
Après l'analyse, redirigez l'arbre de syntaxe abstraite via le préprocesseur commanderL’
module Ast_mapper(3) implémente l'interface externe d'un préprocesseur.
-directeur
Vérifiez le chemin des informations lors de la vérification de type, pour vous assurer que tous les types sont
dérivé de manière principale. Tous les programmes acceptés en -directeur modes sont également
accepté en mode par défaut avec des types équivalents, mais des signatures binaires différentes.
-rectypes
Autoriser les types récursifs arbitraires lors de la vérification de type. Par défaut, uniquement récursif
les types où la récursivité passe par un type d'objet sont pris en charge. Notez qu'une fois
vous avez créé une interface en utilisant ce drapeau, vous devez l'utiliser à nouveau pour tous
dépendances.
-variante-d'exécution suffixe
Ajoutez des effets de suffixe au nom de la bibliothèque d'exécution qui sera utilisée par le programme. Si
OCaml a été configuré avec l'option -avec-debug-runtime, puis le d le suffixe est
pris en charge et donne une version de débogage du runtime.
-S Conservez le code assembleur produit lors de la compilation. Le code d'assemblage du
fichier source x.ml est enregistré dans le fichier x.p.
-chaîne-sûre
Faire respecter la séparation entre les types un magnifique et octets, rendant ainsi les chaînes read-
seul. Cela deviendra la valeur par défaut dans une future version d'OCaml.
-partagé
Construisez un plugin (généralement .cmxs) qui peut être chargé dynamiquement avec le Lien dynamique
module. Le nom du plugin doit être défini avec le -o option. Un plugin peut inclure
un certain nombre de modules et de bibliothèques OCaml, et des objets natifs supplémentaires (fichiers .o, .a).
La création de plugins natifs n'est prise en charge que pour certains systèmes d'exploitation. Sous certains
systèmes (actuellement, uniquement Linux AMD 64), tout le code OCaml lié dans un plugin doit
ont été compilés sans le -nodynlien drapeau. Certaines contraintes peuvent également s'appliquer
à la manière dont les objets natifs supplémentaires ont été compilés (sous Linux AMD 64, ils
doit contenir uniquement un code indépendant de la position).
-courts-chemins
Lorsqu'un type est visible sous plusieurs chemins de modules, utilisez le plus court lorsque
impression du nom du type dans les interfaces inférées et les messages d'erreur et d'avertissement.
-séquence-stricte
La partie gauche d'une séquence doit avoir une unité de type.
-fil
Compiler ou lier des programmes multithreads, en combinaison avec les threads système
bibliothèque décrite dans Le manuel de formation OCaml utilisateur Manuel.
-peu sûr
Désactivez la vérification liée pour les accès aux tableaux et aux chaînes (le v.(je)etsi]
constructions). Programmes compilés avec -peu sûr sont donc plus rapides, mais dangereux :
tout peut arriver si le programme accède à un tableau ou à une chaîne en dehors de son
bornes. De plus, désactivez la vérification du diviseur zéro dans la division entière et
opérations de module. Avec -peu sûr, une division entière (ou module) par zéro peut
arrêter le programme ou continuer avec un résultat non spécifié au lieu de lever un
Division par zéro exception.
-chaîne-non sécurisée
Identifier les types un magnifique et octets, rendant ainsi les chaînes inscriptibles. Pour des raisons
de compatibilité descendante, c'est le paramètre par défaut pour le moment, mais ce
changera dans une future version d'OCaml.
-v Imprimer le numéro de version du compilateur et l'emplacement de la bibliothèque standard
répertoire, puis quittez.
-verbeux
Imprimer toutes les commandes externes avant leur exécution, en particulier les invocations de
l'assembleur, le compilateur C et l'éditeur de liens.
-version or -numéro virtuel
Affichez le numéro de version du compilateur sous forme abrégée (par exemple "3.11.0"), puis quittez.
-w liste d'avertissement
Activer, désactiver ou marquer comme fatals les avertissements spécifiés par l'argument
liste d'avertissement. Voir ocamlc(1) pour la syntaxe de liste d'avertissement.
-avertissement-erreur liste d'avertissement
Marquer comme fatals les avertissements spécifiés dans l'argument liste d'avertissement. Le compilateur
s'arrêtera avec une erreur lorsque l'un de ces avertissements est émis. Les liste d'avertissement
a le même sens que pour le -w option : un + des signes (ou une lettre majuscule)
les avertissements correspondants comme fatals, un - signe (ou une lettre minuscule) les transforme
en avertissements non mortels, et un @ signe à la fois permet et marque comme fatal le
avertissements correspondants.
Remarque : il n'est pas recommandé d'utiliser le -avertissement-erreur option dans le code de fabrication,
car cela empêchera presque certainement de compiler votre programme avec des versions ultérieures
d'OCaml lorsqu'ils ajoutent de nouveaux avertissements ou modifient des avertissements existants.
Le paramètre par défaut est -avertissement-erreur -a (tous les avertissements ne sont pas mortels).
-avertir-aide
Affiche la description de tous les numéros d'avertissement disponibles.
-où Imprimez l'emplacement de la bibliothèque standard, puis quittez.
- filet Processus filet comme nom de fichier, même s'il commence par un tiret (-).
-Aide or --Aidez-moi
Affichez un bref résumé d'utilisation et quittez.
OPTIONS POUR LES CANADIENS THE IA32 ARCHITECTURE
Le générateur de code IA32 (Intel Pentium, AMD Athlon) prend en charge les éléments supplémentaires suivants
option:
-ffast-mathématiques
Utiliser les instructions IA32 pour calculer les fonctions trigonométriques et exponentielles,
au lieu d'appeler les routines de bibliothèque correspondantes. Les fonctions concernées sont :
un bronzage, atan2, cos, enregistrer, Log10, sans, sqrt et bronzage. Le code résultant s'exécute plus rapidement,
mais la gamme des arguments pris en charge et la précision du résultat peuvent être
réduit. En particulier, les opérations trigonométriques cos, sans, bronzage ont leur gamme
réduit à [-2^64, 2^64].
OPTIONS POUR LES CANADIENS THE AMD64 ARCHITECTURE
Le générateur de code AMD64 (versions 64 bits d'Intel Pentium et d'AMD Athlon) prend en charge le
options supplémentaires suivantes :
-fPIC Générez un code machine indépendant de la position. C'est la valeur par défaut.
-fno-PIC
Générez un code machine dépendant de la position.
OPTIONS POUR LES CANADIENS THE SPARC ARCHITECTURE
Le générateur de code Sparc prend en charge les options supplémentaires suivantes :
-mars=v8
Générez le code SPARC version 8.
-mars=v9
Générez le code SPARC version 9.
La valeur par défaut consiste à générer le code pour SPARC version 7, qui s'exécute sur tous les processeurs SPARC.
OPTIONS POUR LES CANADIENS THE BRAS ARCHITECTURE
Le générateur de code ARM prend en charge les options supplémentaires suivantes :
-farch=armv4|armv5|armv5te|armv6|armv6t2|armv7
Sélectionnez l'architecture cible ARM
-ffpu=soft|vfpv2|vfpv3-d16|vfpv3
Sélectionnez le matériel à virgule flottante
-fPIC Générez un code machine indépendant de la position.
-fno-PIC
Générez un code machine dépendant de la position. C'est la valeur par défaut.
-pouce
Activer la génération de code Thumb/Thumb-2
-fno-pouce
Désactiver la génération de code Thumb/Thumb-2
Les valeurs par défaut pour l'architecture cible, le matériel à virgule flottante et l'utilisation du pouce étaient
sélectionné au moment de la configuration lors de la construction ocamlopt lui-même. Cette configuration peut être
inspecté à l'aide ocamlopt -config. L'architecture cible dépend du paramètre "modèle",
tandis que le matériel à virgule flottante et la prise en charge du pouce sont déterminés à partir du paramètre ABI dans
"système" ( linux_eabiorlinux_eabihf).
Utilisez ocamlopt.opt en ligne en utilisant les services onworks.net