2010-09-20 82 views
2

我正在嘗試構建Convert :: ASN1模塊,但在此過程中出現錯誤。我使用Perl 5.12.0在Solaris 10上運行perl Makefile.PL無故障,同爲make,而是「使測試」拋出這個錯誤:爲什麼我無法構建在Solaris 10上加載Socket.so的Perl模塊?

它最關鍵的部分IMO:

t/00prim.t ....... Can't load '/usr/local/lib/perl5/5.12.0/sun4-solari +s/auto/Socket 
/Socket.so' for module Socket: ld.so.1: perl5.12.0: fata +l: 
relocation error: file /usr/local/lib/perl5/5.12.0/sun4-solaris/au +to/Socket/Socket.so: 
symbol inet_aton: referenced symbol not found at + /usr/local/lib/perl5/5.12.0/XSLoader.pm 
line 70. 

同樣的錯誤發生當我試圖安裝IO :: Socket。我認爲Socket核心模塊一定是錯誤的。這不是全部錯誤日誌,而是主要部分。

回答

1

注意:這個答案是純粹的猜想,因爲我沒有Solaris機器來測試它。

它看起來像Solaris不inet_atonlibsocket,這可能是什麼在您建立Socket時鏈接。相反,它看起來像你需要將-lresolv添加到生成文件中的LIBS行(我不知道這是否在Makefile.PLSocket ...)。

就像我說的,這是純粹的猜想。我主要從this bug report for DBMail拉這個答案。儘管如此,我希望它能讓你在某個地方。

+0

感謝您的回覆,同時在互聯網上搜索解決方案時,我發現這個:http://rt.perl.org/rt3/Public/Bug/Display.html?id=2930,它來自perl的bug報告插座。這個人描述了一個非常相似的問題,並且他在Solaris上解決了這個問題。他提到像你所做的那樣向圖書館行添加-lresolv。我會嘗試他描述的整個過程,並用我的發現報告。 – Miky 2010-09-21 08:17:50

1

我沒有Perl 5.12安裝,但我可以訪問Solaris 10,並且我可以確認Solaris的libsocket沒有inet_aton(它改爲inet_pton)。

但解析器庫(libresolv)確實有INET_ATON,這樣一種解決方法可能是

-lresolv 

添加到Makefile的LDFLAGS,並建立/自行安裝CPAN之外。