無法在 CentOS 6 上孌孜 Crypt::Sodium



系统安装的Perl是5.10.1版本,我知道它很旧;这些都是基于RHEL的发行版的乐趣!无论我使用cpan,还是下载模块并make它,我都会得到相同的结果:

/usr/bin/perl /usr/share/perl5/ExtUtils/xsubpp  -typemap /usr/share/perl5/ExtUtils/typemap  Sodium.xs > Sodium.xsc && mv Sodium.xsc Sodium.c
Error: Cannot parse function definition from 'crypto_generichash_state * T_PTRREF' in Sodium.xs, line 715
Error: 'crypto_generichash_state *' not in typemap in Sodium.xs, line 735
Error: 'crypto_generichash_state *' not in typemap in Sodium.xs, line 739
Error: 'crypto_generichash_state *' not in typemap in Sodium.xs, line 748
make: *** [Sodium.c] Error 1

第 715 行周围的部分如下所示:

TYPEMAP: <<EOT
crypto_generichash_state * T_PTRREF
EOT

我认为"不在类型映射中"错误是初始错误的结果,但我对 Perl 模块的构建方式完全没有经验;我什至不确定这个XS的东西是什么。关于如何继续的任何建议?

Centos 6 附带的ExtUtils::ParseXS版本不支持嵌入式typemap。安装最新的ExtUtils::ParseXSlibsodium应该可以解决此问题。

从 https://perldoc.perl.org/perlxstypemap.html#Anatomy-of-a-typemap:

传统上,类型映射需要写入单独的文件,通常在CPAN发行版中称为typemap。使用Perl 5.16附带的ExtUtils::P arseXS(XS编译器(版本3.12或更高版本,类型映射也可以使用类似HERE-doc的语法直接嵌入XS代码中:

TYPEMAP: <<HERE
...
HERE

其中HERE可以用其他标识符替换,就像普通的Perl HERE-docs一样。下面有关类型图文本格式的所有详细信息仍然有效。

相关内容

  • 没有找到相关文章

最新更新