2012-10-03 83 views
6

安裝JSON :: XS我希望你們都準備好了很長的冒險通過我的無奈:在Mac OSX

我使用Perl 5.10,在Mac OSX:雪豹,用了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. 

我看這件事在網上,雖然我明白爲什麼它說,它做什麼,我看不出有什麼辦法,我可以解決這個問題,因爲這是得到的Makefile從cpan或其他地方。

另一段:

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版本。另一方面,它確實告訴我,我的套件看起來不錯(不管那是什麼)。如果我嘗試運行他們推薦的命令,我會被告知沒有這樣的文件或目錄。

經過一些Google搜索之後,我一直看到Mac用戶重新引用了XCode。我已經有了一個XCode版本,但因爲它可能有問題,所以我卸載它,然後得到版本3.2.6(我的操作系統對於新版本來說太舊了)。由於未知原因,安裝失敗,它告訴我與軟件公司聯繫。但是,在它失敗之前,它會安裝UNIX工具,包括gcc(我後來得到了最新版本),所以我認爲這不是問題所在。總之,這已經消耗了我今天6個小時的時間,而且我的壓力和身體不適(雖然我在今天上午纔開始這個徒勞無益的冒險,但它已經加劇了),我不知道我應該去哪裏。

我希望這是一個愚蠢的錯誤,將在10秒內由有經驗的用戶糾正,但我擔心最糟糕的。一般來說,我已經完成了我所發現的每一點建議,從用跑步的方式 - 犧牲一隻山羊到太陽神。我會很感激任何幫助。

+1

(''YAML'沒有安裝,不會存儲持久狀態'是無害的。) – ikegami

+0

你從'perl -MExtUtils :: CBuilder -E'say ExtUtils :: CBuilder-> new-> have_compiler || 0''? (可能創建幾個文件) – ikegami

+0

從perlmonks線程:我檢查了,我確實有'BSD子系統'。我也檢查了一下,發現我確實有'make',那個cpan可以找到它。我也嘗試刪除以前的版本。沒什麼幫助。 – user1718471

回答

5

您最好僅離開系統的perl。相反,請使用perlbrew安裝您自己的perl s。

您可以安裝cpanm不使用cpan使用

curl -L http://cpanmin.us | perl - App::cpanminus

爲本地perl

另外,您可能需要安裝command line tools for XCode

如果你不能,你可能要考慮安裝從MacPorts構建工具,並把那些在未來的系統路徑的路徑中,但經過當地perl因爲你不一定要惹一perl MacPorts可能會安裝。

+3

+1來安裝命令行工具。我之前遇到過這個問題,如果在這裏也遇到問題,我也不會感到驚訝。 –

+0

@SinanÜnür我已經基本上追蹤了這個問題,直到系統找不到可用的c編譯器。我有gcc-4.2.1,但由於某種原因,它無法找到它/使用它。當我嘗試使用perlbrew進行安裝時,它會告訴我'ld:library找不到-lcrt1.10.6.o'。通過搜索我的電腦,我在'/ Developer/SDKs/MacOSX10.6.sdk/usr/lib /'中找到了一個crt1.10.6.o文件。我不知道如何使它對編譯器可見,因爲我無法訪問makefile。 – user1718471

+0

您是否爲您的XCode版本安裝了XCode命令行工具? –