AnglaisFrançaisEspagnol

Ad


Icône de favori OnWorks

h2xs - En ligne dans le Cloud

Exécutez h2xs dans le fournisseur d'hébergement gratuit OnWorks sur Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS

Il s'agit de la commande h2xs 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


h2xs - convertit les fichiers d'en-tête .h C en extensions Perl

SYNOPSIS


h2xs [OPTIONS ...] [fichier d'en-tête ... [extra_libraries]]

h2xs -h|-?|--Aidez-moi

DESCRIPTION


h2xs construit une extension Perl à partir des fichiers d'en-tête C. L'extension comprendra des fonctions
qui peut être utilisé pour récupérer la valeur de toute instruction #define qui se trouvait dans l'en-tête C
fichiers.

La nom_module sera utilisé pour le nom de l'extension. Si nom_module n'est pas
fourni alors le nom du premier fichier d'en-tête sera utilisé, avec le premier caractère
en majuscule.

Si l'extension peut nécessiter des bibliothèques supplémentaires, elles doivent être incluses ici. L'extension
Makefile.PL se chargera de vérifier si les bibliothèques existent réellement et comment elles
doit être chargé. Les bibliothèques supplémentaires doivent être spécifiées sous la forme -lm -lposix, etc,
tout comme sur la ligne de commande cc. Par défaut, le Makefile.PL recherchera dans le
chemin de la bibliothèque déterminé par Configure. Ce chemin peut être augmenté en incluant des arguments
de la forme -L/une autre/bibliothèque/chemin dans l'argument des extra-bibliothèques.

Malgré son nom, h2xs peut également être utilisé pour créer un squelette de module Perl pur. Voir le
-X option.

OPTIONS


-A, --omit-chargement automatique
Omettez toutes les fonctions de chargement automatique. C'est la même chose que -c mais supprime également le
instruction "use AutoLoader" du fichier .pm.

-B, --version bêta
Utilisez un numéro de version de style alpha/bêta. Le numéro de version est "0.00_01" sauf si
-v est spécifié.

-C, --omettre-changements
Omet la création du Modifications et ajoute une section HISTORY au modèle POD.

-F, --cpp-drapeaux=ajouter des drapeaux
Indicateurs supplémentaires à spécifier au préprocesseur C lors de l'analyse de l'en-tête pour la fonction
déclarations. Écrit ces options dans le fichier généré Makefile.PL trop.

-M, --func-masque=Standard expression
sélectionne les fonctions/macros à traiter.

-O, --écraser-ok
Permet d'écraser un répertoire d'extension préexistant.

-P, --omettre-pod
Omettez la section POD stub générée automatiquement.

-X, --omettre-XS
Omettez la portion XS. Utilisé pour générer un squelette de module Perl pur. "-c" et "-f" sont
implicitement activé.

-a, --gen-accesseurs
Générez une méthode d'accès pour chaque élément des structs et des unions. Le généré
les méthodes sont nommées d'après le nom de l'élément ; renverra la valeur actuelle du
élément s'il est appelé sans arguments supplémentaires ; et définira l'élément sur le
valeur fournie (et renvoie la nouvelle valeur) si elle est appelée avec un argument supplémentaire.
Les structures et unions incorporées sont renvoyées sous forme de pointeur plutôt que sous forme de
structure, pour faciliter les appels chaînés.

Ces méthodes s'appliquent toutes au type Ptr de la structure ; en plus deux méthodes
sont construits pour le type de structure lui-même, "_to_ptr" qui renvoie un type Ptr
pointant vers la même structure, et une "nouvelle" méthode pour construire et retourner un nouveau
structure, initialisée à zéros.

-b, --version-compat=version
Génère un fichier .pm qui est rétrocompatible avec la version perl spécifiée.

Pour les versions < 5.6.0, les modifications sont.
- pas d'utilisation de 'our' (utilise 'use vars' à la place)
- pas d'avertissements d'utilisation

Spécifier une version de compatibilité supérieure à la version de perl que vous utilisez pour
exécuter h2xs n'aura aucun effet. Si non spécifié, h2xs sera par défaut compatible avec
la version de perl que vous utilisez pour exécuter h2xs.

-c, --omit-constante
Omettez "constant()" du fichier .xs et "AUTOLOAD" spécialisé correspondant du
fichier .pm.

-d, --débogage
Activez les messages de débogage.

-e, --omit-énumérations=[Standard expression]
If Standard expression n'est pas donné, ignorez toutes les constantes définies dans un C
énumération. Sinon, ignorez uniquement les constantes définies dans une énumération dont
le nom correspond Standard expression.

Depuis que Standard expression est facultatif, assurez-vous que ce commutateur est suivi de at
au moins un autre commutateur si vous omettez Standard expression et avoir des arguments en attente
tels que les noms de fichiers d'en-tête. C'est acceptable:

h2xs -e -n Module ::Foo foo.h

Ce n'est pas bien :

h2xs -n Module ::Foo -e foo.h

Dans ce dernier, foo.h est pris comme Standard expression.

-f, --Obliger
Permet de créer une extension pour un en-tête même si cet en-tête n'est pas trouvé dans
répertoires standards inclus.

-g, --mondial
Incluez du code pour stocker en toute sécurité des données statiques dans le fichier .xs. Des extensions qui ne
utiliser des données statiques peut ignorer cette option.

-h, -?, --Aidez-moi
Imprimez l'utilisation, l'aide et la version de ce h2xs et quittez.

-k, --omettre-const-func
Pour les arguments de fonction déclarés comme "const", omettez l'attribut const dans le
Code XS.

-m, --gen-lié-var
Expérimental: pour chaque variable déclarée dans le(s) fichier(s) d'en-tête, déclarer un perl
variable du même nom liée par magie à la variable C.

-n, --Nom=nom_module
Spécifie un nom à utiliser pour l'extension, par exemple, -n RPC::DCE

-o, --opaque-re=Standard expression
Utilisez le type de données "opaque" pour les types C correspondant à l'expression régulière, même si
ces types sont "typedef" - équivalents aux types de typemaps. Ne doit pas être utilisé
sans -x.

Cela peut être utile car, disons, les types qui sont "typedef" équivalents à des entiers peuvent
représentent les poignées liées au système d'exploitation, et on peut vouloir travailler avec ces poignées en mode OO,
comme dans "$handle->do_something()". Utilisez "-o". si vous voulez gérer tous les
types "typedef" en tant que types opaques.

Le type à faire correspondre est blanchi à la chaux (sauf pour les virgules, qui n'ont pas d'espace avant
eux, et plusieurs "*" qui n'ont pas d'espace entre eux).

-p, --remove-préfixe=préfixe
Spécifiez un préfixe qui doit être supprimé des noms de fonction Perl, par exemple,
-p sec_rgy_ Ceci configure le XS PRÉFIXE mot-clé et supprime le préfixe des fonctions
qui sont chargés automatiquement via le mécanisme "constant()".

-s, --const-subs=sous1, sous2
Créez un sous-programme perl pour les macros spécifiées plutôt que de les charger automatiquement avec le
constante() sous-programme. Ces macros sont supposées avoir un type de retour de carboniser *,
par exemple, -s sec_rgy_wildcard_name,sec_rgy_wildcard_sid.

-t, --type-par-défaut=type
Spécifiez le type interne que le constante() mécanisme utilisé pour les macros. Le défaut
est IV (entier signé). Actuellement, toutes les macros trouvées lors de l'analyse de l'en-tête
processus sera supposé avoir ce type. Les futures versions de "h2xs" pourraient gagner le
capacité à faire des suppositions éclairées.

--use-new-test
Quand --version-compat (-b) est présent, les tests générés utiliseront "Test::More"
plutôt que "Test" qui est la valeur par défaut pour les versions antérieures à 5.6.2. "Test::More" va
être ajouté à PREREQ_PM dans le "Makefile.PL" généré.

--use-anciens-tests
Forcera la génération de code de test qui utilise l'ancien module "Test".

--skip-exportateur
N'utilisez pas "Exporter" et/ou n'exportez aucun symbole.

--skip-ppport
N'utilisez pas "Devel::PPPort": pas de portabilité vers une ancienne version.

--skip-chargeur automatique
N'utilisez pas le module "AutoLoader" ; mais garde le constante() fonction et "sous
AUTOLOAD" pour les constantes.

--skip-strict
N'utilisez pas le pragma "strict".

--skip-avertissements
N'utilisez pas le pragma « avertissements ».

-v, --version=version
Spécifiez un numéro de version pour cette extension. Ce numéro de version est ajouté au
modèles. La valeur par défaut est 0.01, ou 0.00_01 si "-B" est spécifié. La version
spécifié doit être numérique.

-x, --autogen-xsubs
Générez automatiquement des XSUB en fonction des déclarations de fonction dans le fichier d'en-tête. Les
le package "C::Scan" doit être installé. Si cette option est spécifiée, le nom du
Le fichier d'en-tête peut ressembler à "NAME1,NAME2". Dans ce cas, NAME1 est utilisé à la place du
chaîne spécifiée, mais les XSUB ne sont émises que pour les déclarations incluses à partir du fichier
NOM2.

Notez que certains types d'arguments/valeurs de retour pour les fonctions peuvent entraîner
XSUB-declarations/typemap-entries qui nécessitent une édition manuelle. Tels peuvent être des objets qui
ne peut pas être converti depuis/en un pointeur (comme "long long"), des pointeurs vers des fonctions, ou
tableaux. Voir aussi la section sur les « LIMITATIONS de -x".

EXEMPLES


# Comportement par défaut, l'extension est Rusers
h2xs rpcsvc/rusers

# Idem, mais l'extension est RUSERS
h2xs -n RUSERS rpcsvc/rusers

# L'extension est rpcsvc::rusers. trouve encore
h2xs rpcsvc :: rusers

# L'extension est ONC::RPC. trouve encore
h2xs -n ONC ::RPC rpcsvc/rusers

# Sans constante() ou AUTOLOAD
h2xs -c rpcsvc/rusers

# Crée des modèles pour une extension nommée RPC
h2xs -cfn RPC

# L'extension est ONC::RPC.
h2xs -cfn ONC :: RPC

# L'extension est un module Perl pur sans code XS.
h2xs -X Mon::Module

# L'extension est Lib::Foo qui fonctionne au moins avec Perl5.005_03.
# Des constantes sont créées pour tous les #defines et enums que h2xs peut trouver
# dans foo.h.
h2xs -b 5.5.3 -n Lib ::Foo foo.h

# L'extension est Lib::Foo qui fonctionne au moins avec Perl5.005_03.
# Des constantes sont créées pour tous les #defines mais uniquement pour les énumérations
# dont les noms ne commencent pas par 'bar_'.
h2xs -b 5.5.3 -e '^bar_' -n Lib::Foo foo.h

# Makefile.PL cherchera la bibliothèque -lrpc dans
# répertoire supplémentaire /opt/net/lib
h2xs rpcsvc/rusers -L/opt/net/lib -lrpc

# L'extension est DCE::rgynbase
# le préfixe "sec_rgy_" est supprimé des noms de fonction perl
h2xs -n DCE::rgynbase -p sec_rgy_ dce/rgynbase

# L'extension est DCE::rgynbase
# le préfixe "sec_rgy_" est supprimé des noms de fonction perl
# sous-routines sont créées pour sec_rgy_wildcard_name et
# sec_rgy_wildcard_sid
h2xs -n DCE::rgynbase -p sec_rgy_ \
-s sec_rgy_wildcard_name,sec_rgy_wildcard_sid dce/rgynbase

# Faire XS sans définit dans perl.h, mais avec des déclarations de fonction
# visible depuis perl.h. Le nom de l'extension est perl1.
# Lors du scan de perl.h, définissez -DEXT=extern -DdEXT= -DINIT(x)=
# Des barres obliques inverses supplémentaires ci-dessous car la chaîne est passée au shell.
# Notez qu'un répertoire avec des fichiers d'en-tête perl
# être ajouté automatiquement pour inclure le chemin.
h2xs -xAn perl1 -F "-DEXT=extern -DdEXT= -DINIT\(x\)=" perl.h

# Idem avec la déclaration de fonction dans proto.h comme visible depuis perl.h.
h2xs -xAn perl2 perl.h,proto.h

# Idem mais ne sélectionnez que les fonctions qui correspondent à /^av_/
h2xs -M '^av_' -xAn perl2 perl.h,proto.h

# Idem mais traite SV* etc comme des types "opaques"
h2xs -o '^[S]V \*$' -M '^av_' -xAn perl2 perl.h,proto.h

Extension basé on .h ainsi que .c fichiers
Supposons que vous ayez des fichiers C implémentant certaines fonctionnalités, et les fichiers correspondants
fichiers d'en-tête. Comment créer une extension qui rend cette fonctionnalité accessible dans
Perl ? L'exemple ci-dessous suppose que les fichiers d'en-tête sont interface_simple.h ainsi que
interface_hairy.h, et vous voulez que le module perl soit nommé "Ext::Ension". Si tu as besoin
quelques directives de préprocesseur et/ou des liens avec des bibliothèques externes, voir les drapeaux "-F",
"-L" et "-l" dans "OPTIONS".

Trouver le nom du répertoire
Commencez par une exécution fictive de h2xs :

h2xs -Afn Ext ::Ension

Le seul but de cette étape est de créer les répertoires nécessaires et de vous informer
les noms de ces répertoires. À partir de la sortie, vous pouvez voir que le répertoire pour
l'extension est Extension.

Copier les fichiers C
Copiez vos fichiers d'en-tête et vos fichiers C dans ce répertoire Extension.

Créer l'extension
Exécutez h2xs, en écrasant les anciens fichiers générés automatiquement :

h2xs -Oxan Ext ::Ension interface_simple.h interface_hairy.h

h2xs recherche les fichiers d'en-tête après en changeant dans le répertoire d'extension, il trouvera
vos fichiers d'en-tête OK.

Archiver et tester
Comme d'habitude, cours

Extension/Ension cd
perl Makefile.PL
faire dist
faire
faire un test

Allusions
Il est important de faire "make dist" le plus tôt possible. De cette façon, vous pouvez facilement
fusionner(1) vos modifications apportées aux fichiers générés automatiquement si vous décidez de modifier vos fichiers ".h" et
relancer h2xs.

N'oubliez pas d'éditer la documentation dans le fichier généré .pm fichier.

Considérez les fichiers générés automatiquement comme des squelettes uniquement, vous pouvez inventer de meilleures interfaces
que ce que h2xs pouvait deviner.

Considérez cette section comme une ligne directrice uniquement, d'autres options de h2xs peuvent mieux convenir
vos besoins.

ENVIRONNEMENT


Aucune variable d'environnement n'est utilisée.

Utilisez h2xs en ligne en utilisant les services onworks.net


Serveurs et postes de travail gratuits

Télécharger des applications Windows et Linux

Commandes Linux

Ad