如何使用PERL_IMPLICIT_CONTEXT构建 Perl?



根据perlguts:

当 Perl 是用PERL_IMPLICIT_CONTEXT构建时,调用的扩展 Perl API 中的任何函数都需要传递初始上下文 不知何故。踢球者是你需要用这样的写它 一种在 Perl 尚未构建时扩展仍可编译的方式 启用PERL_IMPLICIT_CONTEXT。

如何使用PERL_IMPLICIT_CONTEXT构建 Perl?我以后如何检查已安装的 Perl 是否已使用PERL_IMPLICIT_CONTEXT编译?

正如@Dada所指出的,perl 5 的构建和安装指南中有关于如何使用PERL_IMPLICIT_CONTEXT构建 Perl 的信息。-A选项与Configure脚本一起使用,以将
-DPERL_IMPLICIT_CONTEXT添加到ccflags。例如,要使用PERL_IMPLICIT_CONTEXT构建 5.28.0 并在$HOME/localperl中安装:

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是否已使用PERL_IMPLICIT_CONTEXT编译?如@JGNI所述,perl -V可用于:

$ 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

或者,您可以使用配置模块访问 Perl 配置信息。

最新更新