【问题标题】:How can I fix "Execution of -e aborted due to compilation errors" in a Perl module Makefile?如何修复 Perl 模块 Makefile 中的“由于编译错误导致执行 -e 中止”?
【发布时间】:2010-02-23 12:36:53
【问题描述】:

我在 Windows 上使用 Strawberry Perl。我为 Buckwalter 编码模块运行 perl Makefile.pl,效果很好。当我运行make 时,它会说

-e 的执行由于编译错误而中止

-e 是什么?我应该去哪个文件来修复错误?显然第 1 行缺少大括号,但我不知道哪个文件缺少大括号,所以我不知道在哪里查找。

【问题讨论】:

  • 让我们看看你报告的所有错误将在最后并告诉我们什么 - 第一个错误才是最重要的
  • 所有错误:-e 第 1 行的语法错误,下一个字符 ) -e 第 1 行,行尾缺少右花括号或方括号 由于编译错误,-e 的执行中止。 make: *** [pm_to_blib] 错误 255 但是这不再重要了,因为事实证明,因为我使用的是 Strawberry Perl,所以我应该使用 dmake,而不是 make。所以我用了它。我运行了 dmake,它成功了,然后进行了 dmake 测试(得到了 RESULT=PASS)。但是在最后一个命令“dmake install”上,我得到:“错误:检测到循环宏”前缀。所以还是有错误。
  • 编辑答案以添加更多信息。 :)

标签: perl makefile


【解决方案1】:

我们使用 perl 的 -e 选项来指定要在命令行上执行的代码。来自perlrun

  • -e commandline
    可用于输入一行程序。如果给出 -e,Perl 将不会在参数列表中查找文件名。可以给出多个 -e 命令来构建多行脚本。确保在正常程序中使用分号。

例如:

$ perl -e 'print "Hello, world!\n"'
你好,世界!

与您看到的类似的错误是

$ perl -e 'while (1) { print "foo!"'
-e 第 1 行,行尾缺少右花括号或方括号
-e 第 1 行,EOF 处的语法错误
-e 的执行由于编译错误而中止。

【讨论】:

    【解决方案2】:

    嗯,从 make 到 dmake 再到 cpan.. 我刚刚切换到使用 CPAN 客户端,并且做到了 “测试编码::巴克沃尔特”,然后 “安装 Encode::Buckwalter”,效果很好! 不知道为什么会发生错误......也许是一些平台问题......

    【讨论】:

    • 在 Windows 上,Perl 使用 nmakedmake。你可能有一个make.exe,但我怀疑它是Perl 所期望的。我相信您必须使用编译 Perl 的 make。试试perl -e "use Config; print $Config{make}" 看看它想要什么样的制作。
    【解决方案3】:

    运行perl Makefile.PL 时,会创建一个名为Makfefile 的文件。在该文件中是各种目标,例如 testinstall,它们执行真正的工作。其中一些是使用 -e 实现的 Perl 单行代码。

    不过,您已经通过使用正确的 make 变体解决了您的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多