【问题标题】:Errors when installing a Perl module using make - Mac OSX 10.7使用 make 安装 Perl 模块时出错 - Mac OSX 10.7
【发布时间】:2015-09-21 19:20:27
【问题描述】:

问题:

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

我做了以下事情:

  • 搜索了一个类似的问题并尝试了它的解决方案 - 没有用。
  • perl ".../config.h, needed by `Makefile'" not working after OSX Lion upgrade
  • 已安装 XCode 命令行开发工具(c 编译器、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

【问题讨论】:

标签: macos makefile perl-module


【解决方案1】:

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

以下是我 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 并且找不到它。您看到的错误是 make 说文件未找到的钝方法。

config.h 包含有关操作系统的特定信息,但不是运行脚本所必需的。仅当您要编译模块时才引用它。使用股票 OSX,您可以获得足够的 perl 来执行脚本。安装 XCode,你就会得到一些东西(比如 config.h)来做 perl “开发”。我使用引号是因为您可以在没有 Xcode 的情况下编写和运行 perl 脚本。但正如您所发现的,编译模块需要 Xcode 提供的附加文件。 (顺便说一下,R​​edHat 也做同样的事情。你必须安装 perl-devel 包来获取 config.h。perl 运行时在一个单独的包中。)

您可以尝试以下方法:

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

【讨论】:

  • 执行此命令:$ls /System/Library/Perl/5.12/darwin-thread-multi-2level/CORE/ 输出:libperl.dylib perl.h - 我认为你说得对我需要重新安装 Xcode。一定是在安装过程中搞砸了。我会给你赏金,因为它会在大约 50 分钟后到期,而且我现在无法测试。我会告诉你进展如何。
  • 你能安装 JSON 模块吗?
  • 重新安装 Xcode 和命令行工具有效。我不知道为什么我以前的版本没有...
  • 无论如何,非常感谢您的回答。 :D 你就是那个男人,现在 dawg!
【解决方案2】:

我遇到了完全相同的错误,虽然这可能不是您的解决方案....在重新安装与 OSX 版本兼容的更新 xcode 之后(安装后重新启动)我仍然有错误 - 剪掉很长简而言之,我注意到错误发生后 /CORE/ 中没有 config.h ......有效的解决方案是先触摸 config.h 并创建文件,然后重新运行 make。希望这可以帮助某人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-08
    • 2014-09-30
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 2020-08-07
    • 1970-01-01
    相关资源
    最近更新 更多