根据perlguts:
使用Perl_IMPLICIT_CONTEXT构建Perl时,扩展会调用 Perl API中的任何函数都需要传递初始上下文 以某种方式争论。更重要的是,您将需要以这种方式编写 尚未构建Perl时扩展仍可编译的一种方式 启用PERL_IMPLICIT_CONTEXT。
如何使用PERL_IMPLICIT_CONTEXT
构建Perl?以及以后如何检查已使用PERL_IMPLICIT_CONTEXT
编译的Perl?
答案 0 :(得分:4)
如@Dada所述,Build and Installation guide for perl 5中包含有关如何使用-A
构建Perl的信息。 Configure
选项与-DPERL_IMPLICIT_CONTEXT
脚本一起使用,可将
ccflags
添加到PERL_IMPLICIT_CONTEXT
。例如,要使用$HOME/localperl
构建5.28.0并安装在 wget https://www.cpan.org/src/5.0/perl-5.28.0.tar.gz
tar -xzf perl-5.28.0.tar.gz
cd perl-5.28.0
./Configure -des -Dprefix=$HOME/localperl -Accflags="-DPERL_IMPLICIT_CONTEXT"
make
make test
make install
中:
perlbrew
或者您可以使用perlbrew install perl-5.28.0 --as=5.28.0ic -Accflags="-DPERL_IMPLICIT_CONTEXT"
perlbrew switch 5.28.0ic
:
perl -V
问题的第二部分:如何检查是否已使用PERL_IMPLICIT_CONTEXT编译已安装的Perl?如@JGNI所述,可以使用$ perl -V | grep PERL_IMPLICIT_CONTEXT
config_args='-de -Dprefix=/home/hakon/perlbrew/perls/5.28.0ic -Dusedevel -Accflags=-DPERL_IMPLICIT_CONTEXT -Aeval:scriptdir=/home/hakon/perlbrew/perls/5.28.0ic/bin'
ccflags ='-DPERL_IMPLICIT_CONTEXT -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
cppflags='-DPERL_IMPLICIT_CONTEXT -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include'
PERL_IMPLICIT_CONTEXT
:
{{1}}
或者,您可以使用Config模块访问Perl配置信息。