在编译为二进制文件时在perl 5.28上进行perlcc编译时出错

Nav*_*pak 3 perl

(/usr/local/perl528)使用以下选项在自定义路径中从Source编译了Perl 5.28 :

config_args='-des -Dprefix=/usr/local/perl528'
Run Code Online (Sandbox Code Playgroud)

然后在perl528中编译B:CC并hello.pl使用以下代码创建一个:

#!/usr/local/perl528/bin/perl

use Socket;

print "Hello world";
Run Code Online (Sandbox Code Playgroud)

下一步:

/usr/local/perl528/perlcc -o hello hello.pl

在执行./hello之后,我得到以下代码:

panic: corrupt saved stack index -1414812757 at (eval 12) line 26.
panic: corrupt saved stack index -1414812757 at (eval 12) line 26.
panic: corrupt saved stack index -1414812757 at (eval 12) line 26.
panic: corrupt saved stack index -1414812757 at (eval 12) line 26.
panic: corrupt saved stack index -1414812757 at (eval 12) line 26.
panic: corrupt saved stack index -1414812757 at (eval 12) line 26.
panic: corrupt saved stack index -1414812757 at (eval 12) line 26.
panic: corrupt saved stack index -1414812757 at (eval 12) line 26.
panic: corrupt saved stack index -1414812757 at (eval 12) line 26.
panic: corrupt saved stack index -1414812757 at (eval 12) line 26.
panic: corrupt saved stack index -1414812757 at (eval 12) line 26.
Run Code Online (Sandbox Code Playgroud)

跟踪./hello:

27738 stat("/usr/local/perl528/lib/5.28.1/x86_64-linux/Socket.pm/auto//.so", 0x9ce0a0) = -1 ENOTDIR (Not a directory)
Run Code Online (Sandbox Code Playgroud)

为什么会出现此错误?

更新:

  • 仅在使用模块时发生问题。

  • use strict; 很好,不会造成任何错误,但其他人会。

  • 代码和错误是真实的。(是的,但是我只有6行代码,但是在第26行出现错误。

谢谢。

amo*_*mon 5

perlcc工具是一个相当专业的工具,不再是Perl核心的一部分。对于与Perl内部结构紧密结合的第三方工具,当使用最新的Perl版本时,您可能会发现一些破损。

查看perlcc 更改文档可以帮助您:

  • 版本1.55(最新的稳定版本)仅增加了对perl 5.24的支持
  • 开发版本1.55_08提到了perl 5.27.3,perl 5.28的开发版本
  • Perl的编译器 GitHub的项目提到的5.28测试

因此:

  • 考虑安装perlcc的开发版本,
  • 甚至直接从GitHub安装。
  • 或者考虑使用较旧的Perl版本。
  • 或者考虑使用cperl,这是perlcc维护者Reini Urban的perl分支。(当然,使用叉子可能会破坏其他东西……)