【问题标题】:CPAN fails to compile C, how can I configure CCFLAGS?CPAN 无法编译 C,如何配置 CCFLAGS?
【发布时间】:2012-08-19 11:26:11
【问题描述】:

我有一个新的 FreeBSD 9.0 安装,它在通过 CPAN 安装需要 C 的模块时遇到问题。似乎在没有-I/usr/local/include 的情况下调用cc。我已经尝试通过使用 INC="-I/usr/local/include" 启动 CPAN 来覆盖它 - 虽然这解决了某些模块的问题,但它会破坏其他模块,因为它似乎覆盖了 makefile 中设置的任何默认值。

我有另一个设置几乎相同的盒子(安装稍旧,但仍然是 FreeBSD 9.0),旧盒子上的 perl -V 显示 ccflags 包含 -I/usr/local/include,而它没有在新盒子上。

我猜这就是 CPAN 在没有它的情况下调用 cc 的原因。

问题是,我该如何配置?

【问题讨论】:

    标签: perl freebsd cpan


    【解决方案1】:

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

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

    正如您已经发现的那样,与 Config 模块中的设置作斗争是一项艰巨的工作。总的来说,最简单的就是不打它。如果你想让 Perl 使用/usr/local/include,那么编译 Perl 以便这样做。您可能还想指定-l/usr/local/lib

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

    【讨论】:

    • 是的,这绝对是前进的方向,但我还没有弄清楚如何;)在两台机器上,Perl 都是 5.14.2(较新的是 5.14.2_2 并且有一个 coupla额外的 FreeBSD 特定补丁,但我看不到任何可能导致此类问题的东西)。在这两种情况下,它都是从 FreeBSD 端口系统安装的,带有默认选项(我什至尝试再次编译它,同样的情况)。知道如何在通过端口编译时添加该选项吗?
    • 因为 FreeBSD 'ports' 系统对我来说是新闻——我第一次听说它——我不知道,恐怕。我通常手动配置 Perl,修复我想要的位置,添加和删除包含目录(在我的情况下通常删除 /usr/local/include;它通常默认包含)等等。 “手动配置”意味着“运行(交互式)配置脚本并为其问题提供适当的值”。我从不在系统目录中安装我的 Perl 版本——我不想冒险搞砸那些期待不同版本的 Perl 的东西。
    【解决方案2】:

    如果它有效,您最好的选择可能是将其添加到由返回的文件中的ccflags 条目中

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

    否则,肯定有办法将此指定给ExtUtis::MakeMakerModule::Build 安装程序。如果是这样,您可以使用o conf makepl_argo conf mbuildpl_arg 设置此cpan。 (别忘了提交!)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-20
      • 2015-11-03
      • 2019-04-01
      • 1970-01-01
      • 2011-03-28
      • 2011-01-21
      • 2012-10-21
      • 1970-01-01
      相关资源
      最近更新 更多