在构建模块时如何覆盖perl的编译标志?

Lou*_*nro 6 perl build perl-module makemaker

构建Perl模块时,ExtUtils :: MakeMaker使用Config.pm中定义的标志(参见perldoc Config)获取ccflags和ldflags等值.

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

perl Makefile.PL ldflags=<options> 
Run Code Online (Sandbox Code Playgroud)

似乎不起作用.

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

Jon*_*ler 2

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

因此,您可以执行以下两件事之一:使用 Perl 将使用的相同选项构建 GNU Readline 库,或者使用用于构建 GNU Readline 的选项构建 Perl。如果你珍视你的机器和你头上的头发,不建议尝试弯曲一个来满足另一个(请不要那么用力地敲打机器 - 这是你应该感到沮丧的软件,而不是硬件;Mac 很好!)。

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