我有一个新的FreeBSD 9.0安装,无法通过CPAN安装需要C的模块。它似乎是在没有cc
的情况下调用-I/usr/local/include
。我已经尝试通过使用INC="-I/usr/local/include"
启动CPAN来覆盖它 - 虽然这解决了某些模块的问题,但它会打破其他模块,因为它似乎会覆盖makefile中设置的任何默认值。
我有另外一个盒子上有相同的设置(稍微安装,但仍然是FreeBSD 9.0),旧盒子上的perl -V
显示ccflags
包含-I/usr/local/include
,而它不在新盒子上。
我猜这就是为什么CPAN在没有它的情况下调用cc
。
问题是,我该如何配置?
答案 0 :(得分:3)
CPAN模块使用的设置来自Config模块,它是核心Perl的一部分。它记录了编译Perl时使用的编译选项和设置。
无论出于何种原因,在您的新FreeBSD 9.0安装上编译Perl的人决定不包含-I/usr/local/include
。
正如您已经发现的那样,在Config模块中进行战斗是很难的。总的来说,最简单的是不打它。如果您希望Perl使用/usr/local/include
,那么编译Perl以便这样做。您可能也想指定-l/usr/local/lib
。
您应该检查两个类似系统上的Perl版本是否相同。
答案 1 :(得分:1)
如果有效,最好的办法是将其添加到
返回的文件中的ccflags
条目中
perl -E'require "Config_heavy.pl"; say $INC{"Config_heavy.pl"};'
否则,肯定有办法向ExtUtis::MakeMaker和Module::Build安装程序指定此项。如果是,您可以使用cpan
和o conf makepl_arg
设置此o conf mbuildpl_arg
。 (别忘了提交!)