gpt4 book ai didi

perlcc 在编译为二进制时在 perl 5.28 上编译错误

转载 作者:行者123 更新时间:2023-12-01 05:22:02 24 4
gpt4 key购买 nike

我使用以下选项从自定义路径 (/usr/local/perl528) 中的源代码编译了 perl 5.28:

config_args='-des -Dprefix=/usr/local/perl528'

然后用perl528编译B:CC,创建一个hello.pl,代码如下:

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

use Socket;

print "Hello world";

下一步:

/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.

./hello 的跟踪:

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

为什么会出现此错误?

更新:

  • 只有在使用模块时才会出现问题。

  • use strict; 很好,不会导致错误,但其他人会。

  • 并且代码和错误都是真实的。 (是的,在线出错26 而我只有 6 行代码。

谢谢。

最佳答案

perlcc 工具是一个相当小众的实用程序,不再是核心 Perl 的一部分。对于与 perl 内部结构紧密结合的第三方工具,您在使用最新的 perl 版本时可能会看到一些损坏。

查看 perlcc Changes文档在这里有帮助:

  • 1.55 版(最新的稳定版)仅添加了对 perl 5.24 的支持
  • 开发版1.55_08提到了perl 5.27.3,perl 5.28的开发版
  • perl-compiler GitHub 项目提到 5.28 上的测试

因此:

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

关于perlcc 在编译为二进制时在 perl 5.28 上编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54505861/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com