使用make - Mac OSX 10.7安装Perl模块时出错

时间:2013-01-22 18:40:29

标签: macos makefile perl-module

问题:

我似乎无法正确安装perl模块,特别是JSON-2.53。

我做了以下事情:

  • 搜索了类似的问题并尝试了其解决方案 - 无效。
  • perl ".../config.h, needed by `Makefile'" not working after OSX Lion upgrade
  • 已安装的XCode命令行开发人员实用程序(c compiler,make等)
  • 阅读此特定perl模块的版本兼容性文档:http://metacpan.org/pod/JSON
  • 运行以下命令以制作和安装所需的perl模块:

    $ perl Makefile.PL

    欢迎使用JSON(v.2.53)

    如果安装JSON :: XS v.2.27,它会使JSON更快。

    **************************小心******************** ******

    • 这是JSON版本2'并且存在许多差异*
    • 到版本1.xx *
    • 请检查使用旧版本的应用程序。 *
    • 请参阅'不兼容的更改旧版本'和'提示' *

    为JSON编写Makefile

(已验证Makefile已写入)

$make
make: *** No rule to make target `/System/Library/Perl/5.12/darwin-thread-multi-2level/CORE/config.h', needed by `Makefile'.  Stop.

这个错误甚至意味着什么?我该怎样做才能成功make install这个模块?

以下是一些可以帮助我调试此问题的其他项目:

$which make
/Applications/Xcode.app/Contents/Developer/usr/bin/make
$which perl
/usr/bin/perl
$perl -v
This is perl 5, version 12, subversion 3 (v5.12.3) built for darwin-thread-multi-2level

2 个答案:

答案 0 :(得分:1)

我认为您需要下载并重新安装XCode。如果我没记错10.7,从应用程序商店下载Xcode后,它会将安装程序删除到您的Applications文件夹中。您需要运行它并尝试再次安装命令行工具(从Xcode的prefernces窗格)。我知道你提到你已经这样做了,但更多的背景可以解释为什么值得再试一次。

以下是我Mac上Makefile中的相关行:

PERL_INC = /System/Library/Perl/5.12/darwin-thread-multi-2level/CORE
# Where is the Config information that we are using/depend on
CONFIGDEP = $(PERL_ARCHLIB)$(DFSEP)Config.pm $(PERL_INC)$(DFSEP)config.h

稍后在Makefile中,CONFIGDEP用作目标中的依赖项。我相信你的情况make正在寻找/System/Library/Perl/5.12/darwin-thread-multi-2level/CORE/config.h并找不到它。你看到的错误是说找不到文件的愚蠢方式。

config.h包含有关操作系统的特定信息,但不需要运行脚本。它只在您要编译模块时引用。使用库存OSX,您可以获得足够的perl来执行脚本。安装XCode,你得到的位(如config.h)来做perl“开发”。我使用引号是因为你可以在没有Xcode的情况下编写和运行perl脚本。但正如您所发现的,编译模块需要Xcode提供的其他文件。 (顺便说一句,RedHat做同样的事情。你必须安装perl-devel包来获取config.h。perl运行时是在一个单独的包中。)

以下是您可以尝试的一些事项:

  1. 验证/System/Library/Perl/5.12/darwin-thread-multi-2level/CORE/config.h存在。如果没有,Xcode命令行实用程序未正确安装。再试一次。
  2. 如果config.h存在,请检查其内容并确保其看起来很清晰。它是一个C头文件,由注释和#define语句组成。
  3. 如果您无权查看config.h,则会出现权限问题。尝试使用sudo make作为旁路。 “磁盘工具”(位于“应用程序” - >“实用工具”中)可能能够永久修复此问题。
  4. 您可能会通过从CONFIGDEP中删除“$(PERL_INC)$(DFSEP)config.h”来更改Makefile。我在我的10.8 Mac上做了这个,它没有问题(它也通过了所有测试)。但是,如果找不到config.h问题的根本原因,下次要安装perl模块时,可能会发现自己回到了起步的位置。

答案 1 :(得分:0)

我有这个完全相同的错误,虽然这可能不是你的解决方案....重新安装与OSX版本兼容的更新的xcode(+安装后重新启动)我仍然有错误 - 削减了很长时间故事简短我注意到错误之后/ CORE /中没有config.h .....解决方法是触摸config.h并首先创建文件然后重新运行make。希望这有助于某人。