InglésFrancésEspañol

Ejecutar servidores | Ubuntu > | Fedora > |


icono de página de OnWorks

h2xs: en línea en la nube

Ejecute h2xs en el proveedor de alojamiento gratuito de OnWorks a través de Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS

Este es el comando h2xs que se puede ejecutar en el proveedor de alojamiento gratuito de OnWorks utilizando una de nuestras múltiples estaciones de trabajo en línea gratuitas, como Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS.

PROGRAMA:

NOMBRE


h2xs: convierte archivos de encabezado .h C a extensiones Perl

SINOPSIS


h2xs [OPCIONES ...] [archivo de encabezado ... [bibliotecas_extra]]

h2xs -h|-?|--ayuda

DESCRIPCIÓN


h2xs crea una extensión Perl a partir de archivos de encabezado C. La extensión incluirá funciones
que se puede usar para recuperar el valor de cualquier declaración #define que estaba en el encabezado C
archivos.

La Nombre del módulo se utilizará para el nombre de la extensión. Si module_name no es
suministrado, se utilizará el nombre del primer archivo de encabezado, con el primer carácter
en mayúsculas.

Si la extensión puede necesitar bibliotecas adicionales, deben incluirse aquí. La extensión
Makefile.PL se encargará de comprobar si las bibliotecas existen realmente y cómo
debe cargarse. Las bibliotecas adicionales deben especificarse en la forma -lm -lposix, etc.
al igual que en la línea de comando cc. Por defecto, Makefile.PL buscará en el
ruta de la biblioteca determinada por Configure. Esa ruta se puede aumentar al incluir argumentos
de la forma -L / otro / biblioteca / ruta en el argumento extra-bibliotecas.

A pesar de su nombre, h2xs también se puede utilizar para crear un módulo Perl puro esqueleto. Ver el
-X .

OPCIONES


-A, --omitir-carga automática
Omita todas las funciones de carga automática. Esto es lo mismo que -c pero también quita el
instrucción "use AutoLoader" del archivo .pm.

-B, --versión beta
Utilice un número de versión de estilo alfa / beta. Hace que el número de versión sea "0.00_01" a menos que
-v está especificado.

-C, --omit-cambios
Omite la creación del Cambios y agrega una sección HISTORIA a la plantilla POD.

-F, --cpp-flags=agregar banderas
Indicadores adicionales para especificar al preprocesador de C al escanear el encabezado para la función
declaraciones. Escribe estas opciones en el generado Makefile.PL

-M, --func-máscara=regular expresión
selecciona funciones / macros para procesar.

-O, - sobrescribir-ok
Permite sobrescribir un directorio de extensión preexistente.

-P, --omitir-pod
Omita la sección Stub POD autogenerada.

-X, --omitir-XS
Omita la porción XS. Se utiliza para generar un módulo Perl puro esqueleto. "-c" y "-f" son
habilitado implícitamente.

-a, --accesores genéticos
Genere un método de acceso para cada elemento de estructuras y uniones. El generado
los métodos se nombran después del nombre del elemento; devolverá el valor actual de la
elemento si se llama sin argumentos adicionales; y establecerá el elemento en el
valor proporcionado (y devuelve el nuevo valor) si se llama con un argumento adicional.
Las estructuras y uniones incrustadas se devuelven como un puntero en lugar de las uniones completas.
estructura, para facilitar llamadas encadenadas.

Todos estos métodos se aplican al tipo Ptr para la estructura; adicionalmente dos métodos
se construyen para el tipo de estructura en sí, "_to_ptr" que devuelve un tipo Ptr
apuntando a la misma estructura, y un "nuevo" método para construir y devolver un nuevo
estructura, inicializada a ceros.

-b, --compat-versión=versión
Genera un archivo .pm que es compatible con versiones anteriores de la versión de perl especificada.

Para las versiones <5.6.0, los cambios son.
- sin uso de 'nuestro' (usa 'use vars' en su lugar)
- sin 'advertencias de uso'

Especificar una versión de compatibilidad superior a la versión de perl que está utilizando para
ejecutar h2xs no tendrá ningún efecto. Si no se especifica, h2xs será compatible de forma predeterminada con
la versión de perl que está utilizando para ejecutar h2xs.

-c, - omit-constante
Omita "constante ()" del archivo .xs y el correspondiente "AUTOLOAD" especializado del
Archivo .pm.

-d, - depuración
Activa la depuración de mensajes.

-e, --omitir-enumeraciones=[regular expresión]
If regular expresión no se da, omita todas las constantes que están definidas en un C
enumeración. De lo contrario, omita solo las constantes que están definidas en una enumeración cuyo
coincidencias de nombre regular expresión.

Como regular expresión es opcional, asegúrese de que este interruptor vaya seguido de en
al menos otro interruptor si omite regular expresión y tengo algunos argumentos pendientes
como nombres de archivos de encabezado. Esto esta bien:

h2xs -e -n Módulo :: Foo foo.h

Esto no esta bien:

Módulo h2xs -n :: Foo -e foo.h

En este último, foo.h se toma como regular expresión.

-f, --fuerza
Permite crear una extensión para un encabezado incluso si ese encabezado no se encuentra en
estándar incluyen directorios.

-g, --global
Incluya código para almacenar datos estáticos de forma segura en el archivo .xs. Extensiones que no
hacer uso de datos estáticos puede ignorar esta opción.

-h, -?, --ayuda
Imprima el uso, la ayuda y la versión de este h2xs y salga.

-k, --omitir-const-función
Para los argumentos de función declarados como "const", omita el atributo const en el
Código XS.

-m, --var-ligada al gen
Emparejamiento: para cada variable declarada en el (los) archivo (s) de encabezado, declare un perl
variable del mismo nombre ligada mágicamente a la variable C.

-n, --nombre=Nombre del módulo
Especifica un nombre que se utilizará para la extensión, por ejemplo, -n RPC :: DCE

-o, --opaco-re=regular expresión
Utilice el tipo de datos "opaco" para los tipos C que coinciden con la expresión regular, incluso si
estos tipos son "typedef" -equivalentes a los tipos de typemaps. No debería ser usado
sin -x.

Esto puede ser útil ya que, digamos, los tipos que son "typedef" -equivalentes a enteros pueden
representan identificadores relacionados con el sistema operativo, y es posible que desee trabajar con estos identificadores en forma OO,
como en "$ handle-> do_something ()". Utilice "-o". si quieres manejar todos los
tipos ed "typedef" como tipos opacos.

El tipo de coincidencia está encalado (a excepción de las comas, que no tienen espacios en blanco antes
ellos, y múltiples "*" que no tienen espacios en blanco entre ellos).

-p, --remove-prefijo=prefijo
Especifique un prefijo que debe eliminarse de los nombres de las funciones de Perl, por ejemplo,
-p sec_rgy_ Esto configura el XS PREFIJO palabra clave y elimina el prefijo de las funciones
que se cargan automáticamente a través del mecanismo "constante ()".

-s, --const-subs=sub1, sub2
Cree una subrutina de Perl para las macros especificadas en lugar de autocargar con el
constante() subrutina. Se supone que estas macros tienen un tipo de retorno de tanque *,
por ejemplo, -s sec_rgy_wildcard_name, sec_rgy_wildcard_sid.

-t, - tipo predeterminado=tipo
Especifique el tipo interno que el constante() usos del mecanismo para macros. El valor por defecto
es IV (entero con signo). Actualmente todas las macros encontradas durante el escaneo del encabezado
Se supondrá que el proceso tiene este tipo. Las versiones futuras de "h2xs" pueden obtener el
capacidad para hacer conjeturas fundamentadas.

--use-nuevas-pruebas
En el momento en que --compat-versión (-b) está presente, las pruebas generadas usarán "Test :: More"
en lugar de "Prueba", que es el valor predeterminado para las versiones anteriores a 5.6.2. "Prueba :: Más"
ser agregado a PREREQ_PM en el "Makefile.PL" generado.

--usar-viejas-pruebas
Forzará la generación de código de prueba que usa el módulo "Prueba" más antiguo.

--salto-exportador
No utilice "Exportador" y / o exporte ningún símbolo.

--skip-ppport
No utilice "Devel :: PPPort": no tiene portabilidad a una versión anterior.

--skip-cargador automático
No utilice el módulo "Autocargador"; pero mantén el constante() función y "sub
AUTOLOAD "para constantes.

--skip-estricto
No utilice el pragma "estricto".

--advertencias de saltos
No utilice el pragma "advertencias".

-v, --versión=versión
Especifique un número de versión para esta extensión. Este número de versión se agrega al
plantillas. El valor predeterminado es 0.01 o 0.00_01 si se especifica "-B". La versión
especificado debe ser numérico.

-x, --autogen-xsubs
Genere automáticamente XSUB basándose en declaraciones de funciones en el archivo de encabezado. los
El paquete "C :: Scan" debe estar instalado. Si se especifica esta opción, el nombre del
El archivo de encabezado puede parecerse a "NAME1, NAME2". En este caso se utiliza NAME1 en lugar del
cadena especificada, pero los XSUB se emiten solo para las declaraciones incluidas en el archivo
NOMBRE2.

Tenga en cuenta que algunos tipos de argumentos / valores de retorno para funciones pueden resultar en
Declaraciones XSUB / entradas de mapas de tipos que necesitan edición manual. Tales pueden ser objetos que
no se puede convertir de / a un puntero (como "long long"), punteros a funciones o
matrices. Consulte también la sección sobre "LIMITACIONES de -x".

EJEMPLOS


# Comportamiento predeterminado, la extensión es Rusers
h2xs rpcsvc / rusers

# Lo mismo, pero la extensión es RUSERS
h2xs -n RUSERS rpcsvc / rusers

# La extensión es rpcsvc :: rusers. Todavía encuentra
h2xs rpcsvc :: rusers

# La extensión es ONC :: RPC. Todavía encuentra
h2xs -n ONC :: RPC rpcsvc / rusers

# Sin constante () o AUTOLOAD
h2xs -c rpcsvc / rusers

# Crea plantillas para una extensión llamada RPC
h2xs -cfnRPC

# La extensión es ONC :: RPC.
h2xs -cfn ONC :: RPC

# La extensión es un módulo de Perl puro sin código XS.
h2xs -X My :: Módulo

# La extensión es Lib :: Foo, que funciona al menos con Perl5.005_03.
# Se crean constantes para todas las #definiciones y enumeraciones que h2xs puede encontrar
# en foo.h.
h2xs -b 5.5.3 -n Lib :: Foo foo.h

# La extensión es Lib :: Foo, que funciona al menos con Perl5.005_03.
# Las constantes se crean para todas las #defines pero solo para las enumeraciones
# cuyos nombres no comienzan con 'bar_'.
h2xs -b 5.5.3 -e '^ bar_' -n Lib :: Foo foo.h

# Makefile.PL buscará la biblioteca -lrpc en
# directorio adicional / opt / net / lib
h2xs rpcsvc / rusers -L / opt / net / lib -lrpc

# La extensión es DCE :: rgynbase
# el prefijo "sec_rgy_" se elimina de los nombres de las funciones de perl
h2xs -n DCE :: rgynbase -p sec_rgy_ dce / rgynbase

# La extensión es DCE :: rgynbase
# el prefijo "sec_rgy_" se elimina de los nombres de las funciones de perl
Se crean # subrutinas para sec_rgy_wildcard_name y
# sec_rgy_wildcard_sid
h2xs -n DCE :: rgynbase -p sec_rgy_ \
-s sec_rgy_wildcard_name, sec_rgy_wildcard_sid dce / rgynbase

# Hacer XS sin define en perl.h, pero con declaraciones de función
# visible desde perl.h. El nombre de la extensión es perl1.
# Al escanear perl.h, defina -DEXT = extern -DdEXT = -DINIT (x) =
# Barras diagonales inversas adicionales a continuación porque la cadena se pasa al shell.
# Tenga en cuenta que un directorio con archivos de encabezado de perl
# se agregará automáticamente para incluir la ruta.
h2xs -xAn perl1 -F "-DEXT = extern -DdEXT = -DINIT \ (x \) =" perl.h

# Lo mismo con la declaración de función en proto.h como visible desde perl.h.
h2xs -xAn perl2 perl.h, proto.h

# Lo mismo pero seleccione solo funciones que coincidan con / ^ av_ /
h2xs -M '^ av_' -xAn perl2 perl.h, proto.h

# Lo mismo pero tratar SV * etc como tipos "opacos"
h2xs -o '^ [S] V \ * $' -M '^ av_' -xAn perl2 perl.h, proto.h

Extensión basado on .h y .c archivos
Suponga que tiene algunos archivos C que implementan alguna funcionalidad y el correspondiente
archivos de encabezado. Cómo crear una extensión que haga accesible esta funcionalidad en
Perl? El siguiente ejemplo asume que los archivos de encabezado son interfaz_simple.h y
interfaz_peludo.hy desea que el módulo perl se denomine "Ext :: Ension". Si necesitas
algunas directivas de preprocesador y / o vinculación con bibliotecas externas, consulte los indicadores "-F",
"-L" y "-l" en "OPCIONES".

Encuentra el nombre del directorio
Comience con una ejecución ficticia de h2xs:

h2xs -Afn Ext :: Ension

El único propósito de este paso es crear los directorios necesarios y hacerle saber
los nombres de estos directorios. En la salida, puede ver que el directorio para
la extensión es Extensión.

Copiar archivos C
Copie sus archivos de encabezado y archivos C a este directorio Extensión.

Crea la extensión
Ejecute h2xs, sobrescribiendo archivos antiguos generados automáticamente:

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

h2xs busca archivos de encabezado después de cambiando al directorio de extensiones, por lo que encontrará
sus archivos de encabezado están bien.

Archivar y probar
Como de costumbre, corre

cd Ext / Ension
perl Makefile.PL
hacer dist
para lograr
hacer prueba

Sugerencias
Es importante hacer "make dist" lo antes posible. De esta manera puedes fácilmente
unir(1) sus cambios en los archivos generados automáticamente si decide editar sus archivos ".h" y
vuelva a ejecutar h2xs.

No olvide editar la documentación en el generado .pm archivo.

Considere los archivos generados automáticamente solo como esqueletos, puede inventar mejores interfaces
de lo que h2xs podría adivinar.

Considere esta sección solo como una guía, algunas otras opciones de h2xs pueden adaptarse mejor
tus necesidades.

MEDIOAMBIENTE


No se utilizan variables de entorno.

Utilice h2xs en línea utilizando los servicios de onworks.net


Ad


Ad