亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? embed.pm

?? UNIX下perl實現代碼
?? PM
字號:
# $Id: Embed.pm,v 1.2501 $require 5.002;package ExtUtils::Embed;require Exporter;require FileHandle;use Config;use Getopt::Std;use File::Spec;#Only when we need them#require ExtUtils::MakeMaker;#require ExtUtils::Liblist;use vars qw(@ISA @EXPORT $VERSION	    @Extensions $Verbose $lib_ext	    $opt_o $opt_s 	    );use strict;$VERSION = sprintf("%d.%02d", q$Revision: 1.2505 $ =~ /(\d+)\.(\d+)/);@ISA = qw(Exporter);@EXPORT = qw(&xsinit &ldopts 	     &ccopts &ccflags &ccdlflags &perl_inc	     &xsi_header &xsi_protos &xsi_body);#let's have Miniperl borrow from us instead#require ExtUtils::Miniperl;#*canon = \&ExtUtils::Miniperl::canon;$Verbose = 0;$lib_ext = $Config{lib_ext} || '.a';sub is_cmd { $0 eq '-e' }sub my_return {    my $val = shift;    if(is_cmd) {	print $val;    }    else {	return $val;    }}sub is_perl_object {    $Config{ccflags} =~ /-DPERL_OBJECT/;  }sub xsinit {     my($file, $std, $mods) = @_;    my($fh,@mods,%seen);    $file ||= "perlxsi.c";    my $xsinit_proto = "pTHXo";    if (@_) {       @mods = @$mods if $mods;    }    else {       getopts('o:s:');       $file = $opt_o if defined $opt_o;       $std  = $opt_s  if defined $opt_s;       @mods = @ARGV;    }    $std = 1 unless scalar @mods;    if ($file eq "STDOUT") {	$fh = \*STDOUT;    }    else {	$fh = new FileHandle "> $file";    }    push(@mods, static_ext()) if defined $std;    @mods = grep(!$seen{$_}++, @mods);    print $fh &xsi_header();    print $fh "EXTERN_C void xs_init ($xsinit_proto);\n\n";         print $fh &xsi_protos(@mods);    print $fh "\nEXTERN_C void\nxs_init($xsinit_proto)\n{\n";    print $fh &xsi_body(@mods);    print $fh "}\n";}sub xsi_header {    return <<EOF;#include <EXTERN.h>#include <perl.h>EOF}    sub xsi_protos {    my(@exts) = @_;    my(@retval,%seen);    my $boot_proto = "pTHXo_ CV* cv";    foreach $_ (@exts){        my($pname) = canon('/', $_);        my($mname, $cname);        ($mname = $pname) =~ s!/!::!g;        ($cname = $pname) =~ s!/!__!g;	my($ccode) = "EXTERN_C void boot_${cname} ($boot_proto);\n";	next if $seen{$ccode}++;        push(@retval, $ccode);    }    return join '', @retval;}sub xsi_body {    my(@exts) = @_;    my($pname,@retval,%seen);    my($dl) = canon('/','DynaLoader');    push(@retval, "\tchar *file = __FILE__;\n");    push(@retval, "\tdXSUB_SYS;\n") if $] > 5.002;    push(@retval, "\n");    foreach $_ (@exts){        my($pname) = canon('/', $_);        my($mname, $cname, $ccode);        ($mname = $pname) =~ s!/!::!g;        ($cname = $pname) =~ s!/!__!g;        if ($pname eq $dl){            # Must NOT install 'DynaLoader::boot_DynaLoader' as 'bootstrap'!            # boot_DynaLoader is called directly in DynaLoader.pm            $ccode = "\t/* DynaLoader is a special case */\n\tnewXS(\"${mname}::boot_${cname}\", boot_${cname}, file);\n";            push(@retval, $ccode) unless $seen{$ccode}++;        } else {            $ccode = "\tnewXS(\"${mname}::bootstrap\", boot_${cname}, file);\n";            push(@retval, $ccode) unless $seen{$ccode}++;        }    }    return join '', @retval;}sub static_ext {    unless (scalar @Extensions) {	@Extensions = sort split /\s+/, $Config{static_ext};	unshift @Extensions, qw(DynaLoader);    }    @Extensions;}sub ldopts {    require ExtUtils::MakeMaker;    require ExtUtils::Liblist;    my($std,$mods,$link_args,$path) = @_;    my(@mods,@link_args,@argv);    my($dllib,$config_libs,@potential_libs,@path);    local($") = ' ' unless $" eq ' ';    my $MM = bless {} => 'MY';    if (scalar @_) {       @link_args = @$link_args if $link_args;       @mods = @$mods if $mods;    }    else {       @argv = @ARGV;       #hmm       while($_ = shift @argv) {	   /^-std$/  && do { $std = 1; next; };	   /^--$/    && do { @link_args = @argv; last; };	   /^-I(.*)/ && do { $path = $1 || shift @argv; next; };	   push(@mods, $_);        }    }    $std = 1 unless scalar @link_args;    my $sep = $Config{path_sep} || ':';    @path = $path ? split(/\Q$sep/, $path) : @INC;    push(@potential_libs, @link_args)    if scalar @link_args;    # makemaker includes std libs on windows by default    if ($^O ne 'MSWin32' and defined($std)) {	push(@potential_libs, $Config{perllibs});    }    push(@mods, static_ext()) if $std;    my($mod,@ns,$root,$sub,$extra,$archive,@archives);    print STDERR "Searching (@path) for archives\n" if $Verbose;    foreach $mod (@mods) {	@ns = split(/::|\/|\\/, $mod);	$sub = $ns[-1];	$root = $MM->catdir(@ns);		print STDERR "searching for '$sub${lib_ext}'\n" if $Verbose;	foreach (@path) {	    next unless -e ($archive = $MM->catdir($_,"auto",$root,"$sub$lib_ext"));	    push @archives, $archive;	    if(-e ($extra = $MM->catdir($_,"auto",$root,"extralibs.ld"))) {		local(*FH); 		if(open(FH, $extra)) {		    my($libs) = <FH>; chomp $libs;		    push @potential_libs, split /\s+/, $libs;		}		else {  		    warn "Couldn't open '$extra'"; 		}	    }	    last;	}    }    #print STDERR "\@potential_libs = @potential_libs\n";    my $libperl;    if ($^O eq 'MSWin32') {	$libperl = $Config{libperl};    }    else {	$libperl = (grep(/^-l\w*perl\w*$/, @link_args))[0] || "-lperl";    }    my $lpath = File::Spec->catdir($Config{archlibexp}, 'CORE');    $lpath = qq["$lpath"] if $^O eq 'MSWin32';    my($extralibs, $bsloadlibs, $ldloadlibs, $ld_run_path) =	$MM->ext(join ' ', "-L$lpath", $libperl, @potential_libs);    my $ld_or_bs = $bsloadlibs || $ldloadlibs;    print STDERR "bs: $bsloadlibs ** ld: $ldloadlibs" if $Verbose;    my $linkage = "$Config{ccdlflags} $Config{ldflags} @archives $ld_or_bs";    print STDERR "ldopts: '$linkage'\n" if $Verbose;    return $linkage if scalar @_;    my_return("$linkage\n");}sub ccflags {    my_return(" $Config{ccflags} ");}sub ccdlflags {    my_return(" $Config{ccdlflags} ");}sub perl_inc {    my $dir = File::Spec->catdir($Config{archlibexp}, 'CORE');    $dir = qq["$dir"] if $^O eq 'MSWin32';    my_return(" -I$dir ");}sub ccopts {   ccflags . perl_inc;}sub canon {    my($as, @ext) = @_;    foreach(@ext) {       # might be X::Y or lib/auto/X/Y/Y.a       next if s!::!/!g;       s:^(lib|ext)/(auto/)?::;       s:/\w+\.\w+$::;    }    grep(s:/:$as:, @ext) if ($as ne '/');    @ext;}__END__=head1 NAMEExtUtils::Embed - Utilities for embedding Perl in C/C++ applications=head1 SYNOPSIS perl -MExtUtils::Embed -e xsinit  perl -MExtUtils::Embed -e ccopts  perl -MExtUtils::Embed -e ldopts =head1 DESCRIPTIONExtUtils::Embed provides utility functions for embedding a Perl interpreterand extensions in your C/C++ applications.  Typically, an application B<Makefile> will invoke ExtUtils::Embedfunctions while building your application.  =head1 @EXPORTExtUtils::Embed exports the following functions:xsinit(), ldopts(), ccopts(), perl_inc(), ccflags(), ccdlflags(), xsi_header(), xsi_protos(), xsi_body()=head1 FUNCTIONS=over=item xsinit()Generate C/C++ code for the XS initializer function.When invoked as C<`perl -MExtUtils::Embed -e xsinit --`>the following options are recognized:B<-o> E<lt>output filenameE<gt> (Defaults to B<perlxsi.c>)B<-o STDOUT> will print to STDOUT.B<-std> (Write code for extensions that are linked with the current Perl.)Any additional arguments are expected to be names of modulesto generate code for.When invoked with parameters the following are accepted and optional:C<xsinit($filename,$std,[@modules])>Where,B<$filename> is equivalent to the B<-o> option.B<$std> is boolean, equivalent to the B<-std> option.  B<[@modules]> is an array ref, same as additional arguments mentioned above.=item Examples perl -MExtUtils::Embed -e xsinit -- -o xsinit.c SocketThis will generate code with an B<xs_init> function that glues the perl B<Socket::bootstrap> function to the C B<boot_Socket> function and writes it to a file named F<xsinit.c>.Note that B<DynaLoader> is a special case where it must call B<boot_DynaLoader> directly. perl -MExtUtils::Embed -e xsinitThis will generate code for linking with B<DynaLoader> and each static extension found in B<$Config{static_ext}>.The code is written to the default file name B<perlxsi.c>. perl -MExtUtils::Embed -e xsinit -- -o xsinit.c -std DBI DBD::OracleHere, code is written for all the currently linked extensions along with codefor B<DBI> and B<DBD::Oracle>.If you have a working B<DynaLoader> then there is rarely any need to statically link in any other extensions.=item ldopts()Output arguments for linking the Perl library and extensions to yourapplication.When invoked as C<`perl -MExtUtils::Embed -e ldopts --`>the following options are recognized:B<-std> Output arguments for linking the Perl library and any extensions linkedwith the current Perl.B<-I> E<lt>path1:path2E<gt>Search path for ModuleName.a archives.  Default path is B<@INC>.Library archives are expected to be found as B</some/path/auto/ModuleName/ModuleName.a>For example, when looking for B<Socket.a> relative to a search path, we should find B<auto/Socket/Socket.a>  When looking for B<DBD::Oracle> relative to a search path,we should find B<auto/DBD/Oracle/Oracle.a>Keep in mind that you can always supply B</my/own/path/ModuleName.a>as an additional linker argument.B<-->  E<lt>list of linker argsE<gt>Additional linker arguments to be considered.Any additional arguments found before the B<--> token are expected to be names of modules to generate code for.When invoked with parameters the following are accepted and optional:C<ldopts($std,[@modules],[@link_args],$path)>Where:B<$std> is boolean, equivalent to the B<-std> option.  B<[@modules]> is equivalent to additional arguments found before the B<--> token.B<[@link_args]> is equivalent to arguments found after the B<--> token.B<$path> is equivalent to the B<-I> option.In addition, when ldopts is called with parameters, it will return the argument stringrather than print it to STDOUT.=item Examples perl -MExtUtils::Embed -e ldoptsThis will print arguments for linking with B<libperl.a>, B<DynaLoader> and extensions found in B<$Config{static_ext}>.  This includes librariesfound in B<$Config{libs}> and the first ModuleName.a libraryfor each extension that is found by searching B<@INC> or the path specified by the B<-I> option.  In addition, when ModuleName.a is found, additional linker argumentsare picked up from the B<extralibs.ld> file in the same directory. perl -MExtUtils::Embed -e ldopts -- -std SocketThis will do the same as the above example, along with printing additional arguments for linking with the B<Socket> extension. perl -MExtUtils::Embed -e ldopts -- DynaLoaderThis will print arguments for linking with just the B<DynaLoader> extensionand B<libperl.a>. perl -MExtUtils::Embed -e ldopts -- -std Msql -- -L/usr/msql/lib -lmsqlAny arguments after the second '--' token are additional linkerarguments that will be examined for potential conflict.  If there is noconflict, the additional arguments will be part of the output.  =item perl_inc()For including perl header files this function simply prints: -I$Config{archlibexp}/CORE  So, rather than having to say: perl -MConfig -e 'print "-I$Config{archlibexp}/CORE"'Just say: perl -MExtUtils::Embed -e perl_inc=item ccflags(), ccdlflags()These functions simply print $Config{ccflags} and $Config{ccdlflags}=item ccopts()This function combines perl_inc(), ccflags() and ccdlflags() into one.=item xsi_header()This function simply returns a string defining the same B<EXTERN_C> macro asB<perlmain.c> along with #including B<perl.h> and B<EXTERN.h>.  =item xsi_protos(@modules)This function returns a string of B<boot_$ModuleName> prototypes for each @modules.=item xsi_body(@modules)This function returns a string of calls to B<newXS()> that glue the module B<bootstrap>function to B<boot_ModuleName> for each @modules.B<xsinit()> uses the xsi_* functions to generate most of it's code.=back=head1 EXAMPLESFor examples on how to use B<ExtUtils::Embed> for building C/C++ applicationswith embedded perl, see L<perlembed>.=head1 SEE ALSOL<perlembed>=head1 AUTHORDoug MacEachern E<lt>F<dougm@osf.org>E<gt>Based on ideas from Tim Bunce E<lt>F<Tim.Bunce@ig.co.uk>E<gt> andB<minimod.pl> by Andreas Koenig E<lt>F<k@anna.in-berlin.de>E<gt> and Tim Bunce.=cut

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩视频免费观看高清完整版在线观看| 日本午夜一本久久久综合| 国产精品一区免费视频| www激情久久| 国产伦精品一区二区三区免费 | 欧美性感一区二区三区| 亚洲一区二区三区免费视频| 欧美美女黄视频| 亚洲国产中文字幕在线视频综合| 在线视频一区二区免费| 丝袜亚洲另类丝袜在线| 精品人在线二区三区| 国产91精品一区二区麻豆网站 | 欧美精品18+| 日本亚洲三级在线| 国产日韩影视精品| 亚洲一区二区三区在线播放| 欧美午夜精品免费| 国产在线精品免费| 亚洲少妇30p| 欧美一级高清片| 成人性生交大片| 久久66热偷产精品| 国产精品网站在线播放| 欧美中文字幕一区二区三区| 久久激情五月激情| 中文字幕一区二区三区精华液| 欧美日韩在线亚洲一区蜜芽| 狠狠网亚洲精品| 自拍偷拍欧美激情| 日韩一区二区中文字幕| www.亚洲色图| 蜜桃久久久久久久| 亚洲视频一区二区免费在线观看| 欧美剧情片在线观看| 国产精品白丝jk白祙喷水网站| 亚洲精品写真福利| 精品国产一区二区三区四区四| 91啪在线观看| 国产精品自拍毛片| 亚洲图片有声小说| 久久久激情视频| 欧美一区二区三区四区久久| 99精品视频在线播放观看| 美国精品在线观看| 亚洲精品日产精品乱码不卡| 久久欧美一区二区| 欧美精品九九99久久| av在线综合网| 国产成人欧美日韩在线电影| 日韩福利视频网| 亚洲人精品一区| 中文字幕不卡三区| 精品少妇一区二区三区在线视频 | 亚洲激情在线激情| 久久精品视频一区二区三区| 91精品欧美一区二区三区综合在 | 国产精品福利一区二区| 久久综合久色欧美综合狠狠| 欧美人xxxx| 欧美在线免费观看视频| 国产成人精品一区二| 天堂成人免费av电影一区| 亚洲美女区一区| 中文字幕精品一区二区精品绿巨人| 日韩一级完整毛片| 欧美日本精品一区二区三区| 日本丶国产丶欧美色综合| 99综合影院在线| 成人免费视频播放| 成人精品国产福利| 国产成人aaa| 国产成a人亚洲| 国产盗摄一区二区| 粉嫩一区二区三区在线看| 国产在线一区观看| 国产一区二区视频在线| 国产在线视频不卡二| 精品亚洲成a人在线观看| 久久精品99国产精品| 美女网站视频久久| 久久99精品久久久久婷婷| 卡一卡二国产精品| 精品一区二区三区久久久| 久久99久久99| 国产精品18久久久久久久久 | 成人午夜看片网址| 成人精品gif动图一区| 成人avav影音| 色综合色综合色综合色综合色综合 | 97精品电影院| 99精品黄色片免费大全| 色欧美乱欧美15图片| 欧美三区免费完整视频在线观看| 欧美日韩美女一区二区| 欧美一级久久久| 久久久精品蜜桃| 亚洲欧洲日产国码二区| 一区二区三区四区不卡在线 | 久久久国际精品| 国产精品丝袜一区| 一区二区三区蜜桃网| 丝袜美腿亚洲一区| 国产一区二区三区免费看 | av成人老司机| 欧美午夜精品免费| 精品欧美乱码久久久久久1区2区| 久久久777精品电影网影网| 亚洲欧美另类久久久精品2019| 亚洲一区二区三区美女| 黄色精品一二区| 91国偷自产一区二区开放时间 | 91麻豆精品国产综合久久久久久| 欧美成人伊人久久综合网| 中文字幕免费一区| 亚洲成人av福利| 国产一区二区三区最好精华液| av福利精品导航| 91麻豆精品国产91久久久久| 国产亚洲综合色| 亚洲国产一区二区视频| 国产精品一区二区三区网站| 日本精品视频一区二区三区| 欧美zozo另类异族| 一区二区在线观看免费视频播放| 麻豆91精品91久久久的内涵| 91在线一区二区三区| 欧美一卡二卡在线| 亚洲人成亚洲人成在线观看图片| 日韩电影在线看| 91原创在线视频| 久久综合999| 石原莉奈在线亚洲二区| 成人免费高清视频在线观看| 日韩一区二区三区在线视频| 亚洲天堂精品在线观看| 国产原创一区二区三区| 欧美精选午夜久久久乱码6080| 国产精品久久久久天堂| 韩国视频一区二区| 欧美高清你懂得| 一区二区三区在线免费视频| 成人午夜精品一区二区三区| 日韩欧美国产一二三区| 亚洲第一激情av| 91久久人澡人人添人人爽欧美| 久久综合九色综合欧美就去吻| 亚洲va在线va天堂| 91久久精品一区二区三区| 国产精品美日韩| 国产成人在线看| 久久亚洲精品小早川怜子| 日韩成人免费电影| 欧美三级日韩在线| 亚洲精品福利视频网站| av电影在线观看不卡| 日本一区二区三级电影在线观看 | 一二三四社区欧美黄| 不卡欧美aaaaa| 国产欧美日韩视频在线观看| 国产最新精品精品你懂的| 日韩一二三四区| 日韩精品一卡二卡三卡四卡无卡| 欧美中文字幕亚洲一区二区va在线| 综合久久给合久久狠狠狠97色| 丁香另类激情小说| 日本一区二区久久| 成人99免费视频| 亚洲视频一区在线| 色综合视频一区二区三区高清| 国产精品久久久爽爽爽麻豆色哟哟| 成人午夜在线播放| 亚洲特级片在线| 91久久精品一区二区| 亚洲国产精品自拍| 欧美美女网站色| 美女一区二区久久| 久久一夜天堂av一区二区三区| 九九精品一区二区| 久久久国产精品午夜一区ai换脸| 国产精品12区| 中文字幕在线观看不卡视频| 色综合天天综合网国产成人综合天 | 成人美女视频在线看| 国产精品乱码一区二区三区软件| 成人av影院在线| 亚洲日本在线a| 欧美日韩精品欧美日韩精品一| 视频一区欧美日韩| 精品国产百合女同互慰| 成人午夜免费视频| 亚洲最大色网站| 欧美一级搡bbbb搡bbbb| 国产一区二区在线影院| 日韩一区日韩二区| 欧美人妖巨大在线| 久久99精品国产91久久来源| 国产精品女人毛片| 欧美老肥妇做.爰bbww视频| 久久精品国产成人一区二区三区 |