【问题标题】:How do I override perl's compilation flags when building modules?构建模块时如何覆盖 perl 的编译标志?
【发布时间】:2010-12-08 04:52:24
【问题描述】:

在构建 Perl 模块时,ExtUtils::MakeMaker 使用 Config.pm 中定义的标志(请参阅 perldoc 配置)作为 ccflags 和 ldflags 等值。

如何覆盖这些值(不编辑 Makefile.PL)?

perl Makefile.PL ldflags=<options> 

似乎不起作用。

上下文: 我正在尝试在 OS X 10.6 上编译 Term::Readline::Gnu。 默认的 OS X perl 是通用二进制文件,因此具有诸如 -arch i386 -arch ppc 等 ccflags。
另一方面,我的 Gnu Readline (6.0) 版本是从源代码编译的,仅用于 -arch i386。因此,它不包含试图使用 -arch ppc 链接到它的模块的预期符号。

【问题讨论】:

标签: perl build perl-module makemaker


【解决方案1】:

一般来说,试图覆盖 Config.pm 中的设置是徒劳的。想要更改它们的更正常的原因是更改 Perl 使用非 GNU 编译器编译但您想使用 GCC 的机器上的编译器。这很难做到,用你选择的编译器重新构建 Perl,安装所有辅助模块,然后使用构建你选择的新模块,而不是试图与“系统”作斗争,要简单得多。

因此,您可以做以下两件事之一 - 使用 Perl 将使用的相同选项构建您的 GNU Readline 库,或者使用用于构建 GNU Readline 的选项构建您的 Perl。如果您重视您的机器和头上的头发,则不建议尝试弯曲一个以与另一个相遇(请不要用力撞击机器 - 这是您应该感到沮丧的软件,而不是硬件;Mac 很好!)。

在这两个选项中,重建 GNU Readline 可能更容易 - 它更小,附加组件更少。

【讨论】:

    【解决方案2】:

    文档的Hintsfile Support 部分提供的信息可能是相关的,尽管我没有尝试过。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-18
      • 2019-03-25
      • 2021-05-26
      • 2011-10-19
      • 1970-01-01
      • 2019-09-25
      相关资源
      最近更新 更多