【问题标题】:How to install perl modules on macos when cc can't handle stdlib.h当cc无法处理stdlib.h时如何在macos上安装perl模块
【发布时间】:2019-10-19 14:32:05
【问题描述】:

所以在尝试安装各种 Perl 模块时,包括例如Module::Build,我收到来自 stdlib.h 的错误,例如:

In file included from lib/Simple.xs:2:
In file included from /usr/local/Cellar/perl/5.28.2/lib/perl5/5.28.2/darwin-thread-multi-2level/CORE/perl.h:819:
/usr/include/stdlib.h:147:38: error: expected ')'
           size_t __width, int (* _Nonnull __compar)(const void *, const void *));
                                           ^
/usr/include/stdlib.h:147:26: note: to match this '('
            size_t __width, int (* _Nonnull __compar)(const void *, const void *));
                                ^

(还有更多错误,但这似乎是第一个错误,并且似乎是一个有代表性的示例。)

我相信这些错误是因为我安装的 cc 和包含的库不匹配,但我不是 c 程序员,不知道如何调试它。另外,这里的重点是安装perl模块,而不是学习C,所以我希望存在一些不涉及调试C的解决方案。

Perl: 5.28.2
macOS: 10.13.6
cc -v: Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
  Target: x86_64-apple-darwin17.7.0
  Thread model: posix

【问题讨论】:

  • 您正在安装的模块的文档说明了它与哪些操作系统兼容?哪些编译器?您正在使用其中一种操作系统吗?您正在使用其中一种编译器吗?
  • Jörg W Mittag - 与 perl 模块一样,它没有提及与特定操作系统或编译器的兼容性;一般来说,我认为 Perl 模块可以正常工作。 (在 Module::Build 的特殊情况下,它可能会令人困惑,因为它用于安装其他模块,因此它在这个意义上谈论安装。大概一旦安装,它将用于安装我真正关心的其他模块关于使用,例如 Math::Random。)
  • @Jörg W Mittag,错误来自 stdlib.h。这个问题与 Perl 或任何 Perl 模块无关
  • @ikegami:OP 正在安装 Perl 模块。我对 Perl 模块系统的工作原理并不十分熟悉,但我很确定是 Perl 模块系统或 Perl 模块本身控制着安装过程,包括使用哪个编译器。如果 Perl 模块(系统)决定使用与系统其余部分不兼容的编译器,那么您将收到类似这样的错误。
  • @Jörg W Mittag,执行的命令行输出到屏幕。它是由perl -V:'cc.*' 输出的变量构建的。使用的编译器应该与用于构建 Perl 本身的编译器相同(但您知道发行版喜欢破坏事物......)

标签: xcode macos perl cpan cc


【解决方案1】:

虽然 Apple 的 App Store 没有在我需要的更新列表中列出 XCode,但我尝试安装最新版本——嗯,它允许我的操作系统使用的最新版本——当我完成后,我有一个新版本的cc 有效。

【讨论】:

    猜你喜欢
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    • 1970-01-01
    • 2015-06-14
    • 2012-07-04
    • 2021-05-31
    相关资源
    最近更新 更多