无法在 CentOS 6 上编译 Crypt::Sodium

Unable to compile Crypt::Sodium on CentOS 6

提问人:miken32 提问时间:10/17/2018 更新时间:10/27/2018 访问量:129

问:

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

/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 东西是什么。关于如何继续的任何建议?

Perl Perl-XS

评论

2赞 mob 10/17/2018
你成功的机会看起来并不好。
2赞 mob 10/17/2018
但是如果您尝试安装,它们看起来会更好Crypt::Sodium 0.10
0赞 miken32 10/17/2018
谢谢,我刚刚尝试过,如果我使用在添加 heredoc 块之前存在的代码,它确实可以正常工作。当然,在安全方面,最好有一个最新的版本,但RHEL有时会让这变得困难。
2赞 Shawn 10/17/2018
你总是可以使用 perlbrew 或其他任何东西来设置一个本地的、最新的 perl 安装,而不是系统 perl。

答:

4赞 Sherwin Daganato 10/27/2018 #1

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

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

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

TYPEMAP: <<HERE
...
HERE

where 可以替换为其他标识符,例如普通的 Perl HERE-docs。以下有关类型图文本格式的所有详细信息仍然有效。HERE

评论

0赞 miken32 10/27/2018
cpan install ExtUtils::ParseXS紧随其后的是做到了。谢谢。cpan install Crypt::Sodium