3

如何让 Perl MakeMaker 更改它插入 Makefile 的 CFLAGS 的默认值?基于这篇文章,我尝试了这个:

export CFLAGS=...

然后在cpan里面,我用

! print $ENV{CFLAGS}

但它仍然使用构建 CFLAGS Perl 的任何内容。

我按照这篇文章的建议查看了 lib/perl/.../Config.pm,但 CFLAGS 似乎没有在那里设置。

我有一个相关的问题得到了回答:How to tell CPAN about path to make and cc

我在 CPAN/Config.pm 中取得了一些进展

'makepl_arg' => q[ CCFLAGS="-D_REENTRANT -O2 -m32  -I/opt/csw/bdb48/include -I/opt/csw/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -m32 -DVERSION=\"1.616\" -DXS_VERSION=\"1.616\" -fPIC -I/opt/csw/lib/perl/5.10.1/CORE"],

但这只会将值附加到 CFLAGS 中已经存在的任何内容,gcc 无法理解(如“-x03”和“-KPIC”)。

4

1 回答 1

0

我已成功修改 /opt/csw/lib/perl/5.10.1/Config_heavy.pl 以便 MakeMaker 可以生成可在 OpenCSW 下的 solaris 系统上运行的 Makefile。

其他遇到类似问题的可以在这里下载:https ://gist.github.com/1569718

我还在 opencsw.org 上将它发回给维护者,以便他们希望更新 Perl 的 OpenCSW 版本。我在帖子中指出,正确的方法是完全使用属于 OpenCSW 发行版的工具重新构建 Perl,因为我相信在构建任何给定的 Perl 发行版时,其他脚本会自动生成此文件(尽管我没有验证了它实际上是如何构建的)。这个打补丁的文件只是一个权宜之计,以便我可以在截止日期之前完成我的工作。

我非常希望通过修改 CPAN/Config.pm 中的设置来实现我的目标。这适用于设置 gcc 和 gmake 的正确路径,但不适用于将命令行标志更改为 gcc,因为 CPAN 会将这些标志附加到先前设置的参数字符串中。gcc 在遇到这些标志后会退出,其中一些是不兼容的(例如“-xO3”和“-KPIC”)。

作为记录,CSWperl 5.10.1,REV=2011.01.15 是我从 OpenCSW 安装的 CSW 的当前 Perl 版本。

希望这可以帮助别人。

于 2012-01-06T08:47:59.723 回答