【发布时间】:2012-10-03 23:02:47
【问题描述】:
我希望你们都准备好迎接我的挫折:
我在 Mac OSX 上使用 Perl 5.10:Snow Leopard,XCode 3.2.6。
我想做的是在程序中使用模块 JSON::XS。
这是我第一次用 Perl 做一些事情,所以我查找了一些简单的示例程序并尝试了它们,它们都可以工作。然后我去使用 JSON::XS。我明白了:
Can't locate JSON/XS.pm in @INC (@INC contains: /Library/Perl/Updates/5.10.0 /System/Library/Perl/5.10.0/darwin-thread-multi-2level /System/Library/Perl/5.10.0 /Library/Perl/5.10.0/darwin-thread-multi-2level /Library/Perl/5.10.0 /Network/Library/Perl/5.10.0/darwin-thread-multi-2level /Network/Library/Perl/5.10.0 /Network/Library/Perl /System/Library/Perl/Extras/5.10.0/darwin-thread-multi-2level /System/Library/Perl/Extras/5.10.0 .) at part1.pl line 5.
BEGIN failed--compilation aborted at part1.pl line 5.
我做了一些谷歌搜索,发现它需要安装。同样在我的谷歌搜索中,我发现了使用 cpanm 的大量建议。所以我尝试先使用 cpan 安装 cpanm(我已经有了)。
我得到一个很长的打印输出,基本上是说不,不好,“成功的机会是有限的”,并且一遍又一遍地失败。篇幅太长,无法完整包含在内,但我发现有趣的部分是:
Warning (usually harmless): 'YAML' not installed, will not store persistent state
Running make test
Can't test without successful make
Running make install
Make had returned bad status, install seems impossible
Could not read '/Users/danielgierl/.cpan/build/ExtUtils-ParseXS-3.15-VSmBrZ/META.yml'. Falling back to other methods to determine prerequisites
我考虑安装 YAMl,因为像上面这样的输出部分(我反复得到)让我认为这是问题所在。本质上它也失败了,除其他原因外,它还给了我上述警告。
输出的另一部分说:
make: *** No rule to make target `/System/Library/Perl/5.10.0/darwin-thread-multi-2level/CORE/config.h', needed by `Makefile'. Stop.
我在网上查了一下,虽然我明白它为什么这么说,但我看不出有什么办法可以解决这个问题,因为这些是从 cpan 或其他地方获得的 Makefile。
另一部分:
Running install for module 'version'
Running make for J/JP/JPEACOCK/version-0.9901.tar.gz
Has already been unwrapped into directory /Users/danielgierl/.cpan/build/version-0.9901-U8IMPt
Could not make: Unknown error
Warning (usually harmless): 'YAML' not installed, will not store persistent state
Running make test
Can't test without successful make
Running make install
Make had returned bad status, install seems impossible
通常会有很多未知错误。它告诉我的部分也给我带来了麻烦:
Testing if you have a C compiler
ld: library not found for -lbundle1.o
collect2: ld returned 1 exit status
lipo: can't open input file: /var/folders/1C/1CnzBuv+F5y+8M5YPm6I4k+++TI/-Tmp-//ccTWRqov.out (No such file or directory)
error building /var/folders/1C/1CnzBuv+F5y+8M5YPm6I4k+++TI/-Tmp-/compilet.bundle from /var/folders/1C/1CnzBuv+F5y+8M5YPm6I4k+++TI/-Tmp-/compilet.o at /System/Library/Perl/5.10.0/ExtUtils/CBuilder/Base.pm line 213.
I cannot determine if you have a C compiler
so I will install a perl-only implementation
You can force installation of the XS version with
perl Makefile.PL --xs
我知道我有一个 c 编译器,因为 gcc -v 告诉我它是 4.2.1 版。从好的方面来说,它确实告诉我我的装备看起来不错(不管那是什么)。如果我尝试运行他们推荐给我的命令,我会被告知没有这样的文件或目录。
在谷歌搜索后,我不断看到 Mac 用户重新引用了 XCode。我已经有一个 XCode 版本,但因为它可能有问题,我卸载它,然后获得版本 3.2.6(我的操作系统对于新版本来说太旧了)。由于未知原因安装失败,它告诉我联系软件公司。但是,在它失败之前,它确实安装了 UNIX 工具,包括 gcc(我后来得到了最新版本),所以我认为这不是问题。
总而言之,这已经消耗了我今天大约 6 个小时的时间,而且我感到压力和身体不适(虽然我今天早上开始这个徒劳的冒险之前,但它已经加剧了),我不知道在哪里我应该下一个。
我希望这都是一些愚蠢的错误,经验丰富的用户会在 10 秒内纠正,但我担心最坏的情况。总的来说,我已经完成了我找到的所有建议,从使用 --sudo 跑步到将山羊献祭给太阳神。如有任何帮助,我将不胜感激。
【问题讨论】:
-
(
'YAML' not installed, will not store persistent state是无害的。) -
你从
perl -MExtUtils::CBuilder -E'say ExtUtils::CBuilder->new->have_compiler || 0'得到什么? (可能会创建一些文件) -
来自 perlmonks 线程:我检查过,我确实有
BSD Subsystem。我还查了一下,发现我确实有make,而且cpan可以找到它。我还尝试删除以前的版本。没有任何帮助。 -
@ikegami我执行了,打印输出超过了字符限制,但有一部分说:
ld: library not found for -lbundle1.o和lipo: can't open input file: /var/folders/1C/1CnzBuv+F5y+8M5YPm6I4k+++TI/-Tmp-//ccEuKahH.out (No such file or directory)。它返回 0。其余部分似乎是对gcc-4.2和env LD_RUN_PATH的大量调用
标签: macos perl perl-module