InglesPransesEspanyol

Ad


OnWorks favicon

h2xs - Online sa Cloud

Patakbuhin ang mga h2x sa OnWorks na libreng hosting provider sa Ubuntu Online, Fedora Online, Windows online emulator o MAC OS online emulator

Ito ang command na h2xs na maaaring patakbuhin sa OnWorks na libreng hosting provider gamit ang isa sa aming maramihang libreng online na workstation gaya ng Ubuntu Online, Fedora Online, Windows online emulator o MAC OS online emulator

PROGRAMA:

NAME


h2xs - i-convert ang mga .h C header na file sa mga extension ng Perl

SINOPSIS


h2xs [Opsyon ...] [headerfile ... [extra_libraries]]

h2xs -h|-?|- Tumulong

DESCRIPTION


h2xs bubuo ng extension ng Perl mula sa mga file ng C header. Kasama sa extension ang mga function
na maaaring magamit upang makuha ang halaga ng anumang #define na pahayag na nasa C header
file.

Ang module_name ay gagamitin para sa pangalan ng extension. Kung ang module_name ay hindi
ibinigay pagkatapos ay gagamitin ang pangalan ng unang header file, kasama ang unang character
naka-capitalize.

Kung ang extension ay maaaring mangailangan ng mga karagdagang aklatan, dapat itong isama dito. Ang extension
Ang Makefile.PL ang bahala sa pagsuri kung ang mga aklatan ay talagang umiiral at kung paano sila
dapat load. Ang mga karagdagang aklatan ay dapat na tukuyin sa anyo -lm -lposix, atbp,
tulad ng sa cc command line. Bilang default, ang Makefile.PL ay maghahanap sa pamamagitan ng
path ng library na tinutukoy ng Configure. Maaaring dagdagan ang landas na iyon sa pamamagitan ng pagsasama ng mga argumento
ng anyo -L/isa pa/library/landas sa argumento ng extra-library.

Sa kabila ng pangalan nito, h2xs maaari ding gamitin para gumawa ng skeleton pure Perl module. Tingnan ang
-X pagpipilian.

Opsyon


-A, --omit-autoload
Alisin ang lahat ng pasilidad ng autoload. Ito ay katulad ng -c ngunit tinatanggal din ang
"use AutoLoader" statement mula sa .pm file.

-B, --beta-bersyon
Gumamit ng alpha/beta style version number. Nagiging "0.00_01" ang numero ng bersyon maliban kung
-v ay tinukoy.

-C, --alisin-pagbabago
Tinatanggal ang paglikha ng Mga Pagbabago file, at nagdaragdag ng seksyong KASAYSAYAN sa template ng POD.

-F, --cpp-flags=addflags
Mga karagdagang flag na tutukuyin sa C preprocessor kapag nag-scan ng header para sa function
mga deklarasyon. Isinulat ang mga opsyong ito sa nabuong Makefile.PL masyadong.

-M, --func-mask=regular pagpapahayag
pumipili ng mga function/macros na ipoproseso.

-O, --overwrite-ok
Binibigyang-daan ang isang dati nang extension na direktoryo na ma-overwrite.

-P, --omit-pod
Alisin ang seksyon ng autogenerated stub POD.

-X, --alisin-XS
Alisin ang bahagi ng XS. Ginagamit upang makabuo ng skeleton pure Perl module. Ang "-c" at "-f" ay
implicitly enabled.

-a, --gen-accessor
Bumuo ng paraan ng accessor para sa bawat elemento ng mga istruktura at unyon. Ang nabuo
Ang mga pamamaraan ay pinangalanan pagkatapos ng pangalan ng elemento; ibabalik ang kasalukuyang halaga ng
elemento kung tinatawag na walang karagdagang mga argumento; at itatakda ang elemento sa
ibinigay na halaga (at ibalik ang bagong halaga) kung tinawag na may karagdagang argumento.
Ibinabalik ang mga naka-embed na istruktura at unyon bilang isang pointer sa halip na kumpleto
istraktura, upang mapadali ang mga nakakadena na tawag.

Ang mga paraang ito ay nalalapat lahat sa uri ng Ptr para sa istraktura; dagdag na dalawang pamamaraan
ay binuo para sa mismong uri ng istraktura, "_to_ptr" na nagbabalik ng uri ng Ptr
na tumuturo sa parehong istraktura, at isang "bagong" paraan upang bumuo at magbalik ng bago
istraktura, na sinimulan sa mga zero.

-b, --compat-bersyon=bersyon
Bumubuo ng .pm file na pabalik na tugma sa tinukoy na bersyon ng perl.

Para sa mga bersyon < 5.6.0, ang mga pagbabago ay.
- walang paggamit ng 'aming' (ginagamit ang 'use vars' sa halip)
- walang 'use warnings'

Pagtukoy ng bersyon ng compatibility na mas mataas kaysa sa bersyon ng perl na ginagamit mo
walang epekto ang run h2xs. Kung hindi tinukoy ang mga h2x ay magiging default sa pagiging tugma sa
ang bersyon ng perl na iyong ginagamit upang magpatakbo ng h2xs.

-c, --omit-constant
Alisin ang "constant()" mula sa .xs file at kaukulang espesyal na "AUTOLOAD" mula sa
.pm file.

-d, --debug
I-on ang pag-debug ng mga mensahe.

-e, --omit-enums=[regular pagpapahayag]
If regular pagpapahayag ay hindi ibinigay, laktawan ang lahat ng mga constant na tinukoy sa isang C
enumeration. Kung hindi, laktawan lamang ang mga constant na tinukoy sa isang enum na
mga tugma ng pangalan regular pagpapahayag.

Dahil sa regular pagpapahayag ay opsyonal, siguraduhin na ang switch na ito ay sinusundan ng sa
kahit isa pang switch kung aalisin mo regular pagpapahayag at may ilang nakabinbing argumento
tulad ng mga pangalan ng header-file. Ito ay ok:

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

Ito ay hindi ok:

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

Sa huli, ang foo.h ay kinuha bilang regular pagpapahayag.

-f, --puwersa
Pinapayagan ang isang extension na malikha para sa isang header kahit na ang header na iyon ay hindi matatagpuan sa
kasama sa pamantayan ang mga direktoryo.

-g, --pandaigdigan
Isama ang code para sa ligtas na pag-iimbak ng static na data sa .xs file. Mga extension na hindi
ang paggamit ng static na data ay maaaring balewalain ang opsyong ito.

-h, -?, - Tumulong
I-print ang paggamit, tulong at bersyon para sa h2xs at exit na ito.

-k, --omit-const-func
Para sa mga argumento ng function na idineklara bilang "const", alisin ang const attribute sa nabuo
XS code.

-m, --gen-tied-var
Pang-eksperimentong: para sa bawat variable na idineklara sa (mga) header file, magdeklara ng perl
variable ng parehong pangalan magically nakatali sa C variable.

-n, --pangalan=module_name
Tinutukoy ang isang pangalan na gagamitin para sa extension, hal, -n RPC::DCE

-o, --opaque-re=regular pagpapahayag
Gumamit ng "opaque" na uri ng data para sa mga uri ng C na tumugma sa regular na expression, kahit na
ang mga uri na ito ay "typedef" -katumbas ng mga uri mula sa mga typemap. Hindi dapat gamitin
wala -x.

Ito ay maaaring maging kapaki-pakinabang dahil, sabihin, ang mga uri na "typedef" -katumbas ng mga integer ay maaaring
kumakatawan sa mga handle na nauugnay sa OS, at maaaring gusto ng isa na magtrabaho sa mga handle na ito sa OO-way,
tulad ng sa "$handle->do_something()". Gamitin ang "-o ." kung gusto mong hawakan ang lahat
"typedef" ed na mga uri bilang mga opaque na uri.

Ang type-to-match ay whitewashed (maliban sa mga kuwit, na walang whitespace dati
kanila, at maramihang "*" na walang whitespace sa pagitan nila).

-p, --alisin-prefix=unlapi
Tumukoy ng prefix na dapat alisin sa mga pangalan ng Perl function, hal,
-p sec_rgy_ Itinatakda nito ang XS PREFIX keyword at inaalis ang prefix mula sa mga function
na autoloaded sa pamamagitan ng "constant()" na mekanismo.

-s, --const-subs=sub1, sub2
Gumawa ng perl subroutine para sa mga tinukoy na macro sa halip na mag-autoload gamit ang
pare-pareho() subroutine. Ang mga macro na ito ay ipinapalagay na may uri ng pagbabalik ng tangke *,
hal, -s sec_rgy_wildcard_name, sec_rgy_wildcard_sid.

-t, --default-type=uri
Tukuyin ang panloob na uri na ang pare-pareho() ginagamit ng mekanismo para sa mga macro. Ang default
ay IV (signed integer). Sa kasalukuyan, lahat ng macro ay matatagpuan sa panahon ng pag-scan ng header
ang proseso ay ipapalagay na may ganitong uri. Ang mga hinaharap na bersyon ng "h2xs" ay maaaring makakuha ng
kakayahang gumawa ng mga edukadong hula.

--use-new-tests
Kailan --compat-bersyon (-b) ay naroroon ang nabuong mga pagsubok ay gagamit ng "Test::More"
sa halip na "Pagsubok" na siyang default para sa mga bersyon bago ang 5.6.2. "Pagsusulit::Higit pa" ay gagawin
idaragdag sa PREREQ_PM sa nabuong "Makefile.PL".

--gumamit-lumang-pagsusulit
Pipilitin ang pagbuo ng test code na gumagamit ng mas lumang "Test" module.

--laktawan-exporter
Huwag gumamit ng "Exporter" at/o mag-export ng anumang simbolo.

--laktawan-ppport
Huwag gumamit ng "Devel::PPPort": walang portability sa mas lumang bersyon.

--laktawan-autoloader
Huwag gamitin ang module na "AutoLoader"; ngunit panatilihin ang pare-pareho() function at "sub
AUTOLOAD" para sa mga constant.

--laktawan-mahigpit
Huwag gamitin ang pragma na "mahigpit".

--laktawan ang mga babala
Huwag gamitin ang pragma na "mga babala".

-v, --bersyon=bersyon
Tumukoy ng numero ng bersyon para sa extension na ito. Ang numero ng bersyon na ito ay idinagdag sa
mga template. Ang default ay 0.01, o 0.00_01 kung ang "-B" ay tinukoy. Ang bersyon
ang tinukoy ay dapat na numero.

-x, --autogen-xsubs
Awtomatikong bumuo ng mga XSUB batay sa mga deklarasyon ng function sa header file. Ang
package "C::Scan" ay dapat na naka-install. Kung tinukoy ang opsyong ito, ang pangalan ng
maaaring magmukhang "NAME1,NAME2" ang header file. Sa kasong ito, NAME1 ang ginagamit sa halip na ang
tinukoy na string, ngunit ang mga XSUB ay inilalabas lamang para sa mga deklarasyon na kasama mula sa file
NAME2.

Tandaan na maaaring magresulta ang ilang uri ng argumento/return-values ​​para sa mga function
XSUB-declarations/typemap-entry na nangangailangan ng hand-editing. Ang mga ito ay maaaring mga bagay na
hindi mako-convert mula/sa isang pointer (tulad ng "mahaba ang haba"), mga pointer sa mga function, o
mga array. Tingnan din ang seksyon sa "LIMITASYON ng -x".

HALIMBAWA


# Default na pag-uugali, ang extension ay Rusers
h2xs rpcsvc/rusers

# Pareho, ngunit ang extension ay RUSERS
h2xs -n RUSERS rpcsvc/rusers

Ang # Extension ay rpcsvc::rusers. Nakahanap pa rin
h2xs rpcsvc::rusers

Ang # Extension ay ONC::RPC. Nakahanap pa rin
h2xs -n ONC::RPC rpcsvc/rusers

# Nang walang constant() o AUTOLOAD
h2xs -c rpcsvc/rusers

# Lumilikha ng mga template para sa isang extension na pinangalanang RPC
h2xs -cfn RPC

Ang # Extension ay ONC::RPC.
h2xs -cfn ONC::RPC

Ang # Extension ay isang purong Perl module na walang XS code.
h2xs -X Aking::Modyul

Ang # Extension ay Lib::Foo na gumagana nang hindi bababa sa Perl5.005_03.
# Ang mga Constant ay nilikha para sa lahat ng #defines at mga enum na mahahanap ng h2xs
# sa foo.h.
h2xs -b 5.5.3 -n Lib::Foo foo.h

Ang # Extension ay Lib::Foo na gumagana nang hindi bababa sa Perl5.005_03.
# Ang mga Constant ay nilikha para sa lahat ng #defines ngunit para lamang sa mga enum
# na ang mga pangalan ay hindi nagsisimula sa 'bar_'.
h2xs -b 5.5.3 -e '^bar_' -n Lib::Foo foo.h

Ang # Makefile.PL ay maghahanap ng library -lrpc in
# karagdagang direktoryo /opt/net/lib
h2xs rpcsvc/rusers -L/opt/net/lib -lrpc

# Ang extension ay DCE::rgynbase
Ang # prefix na "sec_rgy_" ay tinanggal mula sa mga pangalan ng perl function
h2xs -n DCE::rgynbase -p sec_rgy_ dce/rgynbase

# Ang extension ay DCE::rgynbase
Ang # prefix na "sec_rgy_" ay tinanggal mula sa mga pangalan ng perl function
# subroutine ang ginawa para sa sec_rgy_wildcard_name at
# sec_rgy_wildcard_sid
h2xs -n DCE::rgynbase -p sec_rgy_ \
-s sec_rgy_wildcard_name, sec_rgy_wildcard_sid dce/rgynbase

# Gumawa ng XS nang walang pagtukoy sa perl.h, ngunit may mga deklarasyon ng function
# nakikita mula sa perl.h. Ang pangalan ng extension ay perl1.
# Kapag nag-scan ng perl.h, tukuyin ang -DEXT=extern -DdEXT= -DINIT(x)=
# Mga karagdagang backslashes sa ibaba dahil ipinasa ang string sa shell.
# Tandaan na ang isang direktoryo na may perl header file ay gagawin
# ay awtomatikong idaragdag upang isama ang landas.
h2xs -xAn perl1 -F "-DEXT=extern -DdEXT= -DINIT\(x\)=" perl.h

# Pareho sa deklarasyon ng function sa proto.h na nakikita mula sa perl.h.
h2xs -xAn perl2 perl.h,proto.h

# Pareho ngunit piliin lamang ang mga function na tumutugma sa /^av_/
h2xs -M '^av_' -xAn perl2 perl.h,proto.h

# Pareho ngunit tinatrato ang SV* atbp bilang mga "opaque" na uri
h2xs -o '^[S]V \*$' -M '^av_' -xAn perl2 perl.h,proto.h

Karugtong batay on .h at .c file
Ipagpalagay na mayroon kang ilang mga C file na nagpapatupad ng ilang pag-andar, at ang kaukulang
mga file ng header. Paano gumawa ng extension na ginagawang naa-access ang functionality na ito sa
Perl? Ipinapalagay ng halimbawa sa ibaba na ang mga file ng header ay interface_simple.h at
interface_hairy.h, at gusto mong pangalanan ang perl module bilang "Ext::Ension". Kung kailangan mo
ilang preprocessor na mga direktiba at/o pag-link sa mga panlabas na aklatan, tingnan ang mga flag na "-F",
"-L" at "-l" sa "OPTIONS".

Hanapin ang pangalan ng direktoryo
Magsimula sa isang dummy run ng h2xs:

h2xs -Afn Ext::Ension

Ang tanging layunin ng hakbang na ito ay lumikha ng mga kinakailangang direktoryo, at ipaalam sa iyo
ang mga pangalan ng mga direktoryo na ito. Mula sa output makikita mo na ang direktoryo para sa
ang extension ay Ext/Ension.

Kopyahin ang mga C file
Kopyahin ang iyong mga header file at C file sa direktoryong ito Ext/Ension.

Lumikha ng extension
Patakbuhin ang mga h2x, i-overwrite ang mas lumang mga awtomatikong nabuong file:

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

Hinahanap ng h2xs ang mga file ng header pagkatapos pagbabago sa direktoryo ng extension, kaya mahahanap nito
OK ang iyong mga file ng header.

I-archive at pagsubok
As usual, tumakbo

cd Ext/Ension
perl Makefile.PL
gumawa ng dist
gumawa
gumawa ng pagsubok

Hint
Mahalagang gawin ang "make dist" sa lalong madaling panahon. Sa ganitong paraan madali mo
pagsamahin(1) ang iyong mga pagbabago sa mga awtomatikong nabuong file kung magpasya kang i-edit ang iyong ".h" na mga file at
muling patakbuhin ang h2xs.

Huwag kalimutang i-edit ang dokumentasyon sa nabuong .pm file.

Isaalang-alang ang mga autogenerated na file bilang mga skeleton lamang, maaari kang mag-imbento ng mas mahusay na mga interface
kaysa sa maaaring hulaan ng h2xs.

Isaalang-alang ang seksyong ito bilang isang gabay lamang, ang ilang iba pang mga opsyon ng h2xs ay maaaring mas angkop
ang mga pangangailangan mo.

Kapaligiran


Walang ginagamit na mga variable ng kapaligiran.

Gumamit ng h2xs online gamit ang mga serbisyo ng onworks.net


Mga Libreng Server at Workstation

Mag-download ng Windows at Linux apps

Linux command

Ad