2012-08-23 27 views
1

我有一个新的FreeBSD 9.0安装,无法通过CPAN安装需要C的模块。这似乎是cc被称为没有-I/usr/local/include。我尝试通过使用INC="-I/usr/local/include"来启动CPAN来解决这个问题 - 虽然这可以解决某些模块的问题,但它为其他人解决了问题,因为它似乎覆盖了makefile中设置的任何默认设置。CPAN未能编译C,我如何配置CCFLAGS?

我有另一个盒子差不多就可以了相同的设置(年龄稍大的安装,但仍FreeBSD的9.0),perl -V对旧框显示ccflags包含-I/usr/local/include,而它没有做的新箱。

我猜这就是为什么CPAN没有它就打电话给cc

问题是,我怎么配置它?

回答

3

CPAN模块使用的设置来自作为核心Perl一部分的Config模块。它记录了编译Perl时使用的编译选项和设置。

无论出于何种原因,在新的FreeBSD 9.0安装中编译Perl的人员决定不包含-I/usr/local/include

正如您已经发现的那样,在配置模块中对抗设置非常困难。总的来说,最简单的方法就是不打击它。如果你想Perl使用/usr/local/include,那么编译Perl就可以。你可能也想指定-l/usr/local/lib

您应该检查两个类似系统上的Perl版本是否相同。

+0

是的,这绝对看起来像前进的方向,但我还没有能够解决如何;)在两台机器上Perl是5.14.2(最新版本是5.14.2_2并有一个coupla额外的FreeBSD特定的修补程序,但我看不到任何可能导致此问题的问题)。在这两种情况下,它都是从FreeBSD ports系统安装的,使用默认选项(我甚至试着再次编译它,同样的情况)。任何想法如何在通过端口编译时添加该选项? – Dan

+0

由于FreeBSD'ports'系统对我来说是新闻 - 我第一次听说它 - 我不知道,恐怕。我通常手动配置Perl,修复我想要的位置,添加和删除包含目录(通常在我的情况下删除'/ usr/local/include',通常默认包含它)等等。 '手动配置'意味着'运行(交互式)配置脚本并为其问题提供适当的值“。我从来没有将我的Perl版本安装在系统目录中 - 我不想冒任何期待不同版本的Perl的风险。 –

1

如果一切正常,你最好的选择可能是由

perl -E'require "Config_heavy.pl"; say $INC{"Config_heavy.pl"};' 

否则将它添加到文件中的ccflags入口返回,肯定是存在指定这ExtUtis::MakeMakerModule::Build安装的一种手段。如果是这样,您可以使用o conf makepl_argo conf mbuildpl_arg来设置此cpan。 (不要忘了提交!)