2009-05-02 14 views
5

我試圖編譯Perl 5.10的我的FreeBSD 7.1(BSD)服務器上,但是當我運行配置腳本,並回答我得到以下錯誤的問題:如何在FreeBSD 7.1下使用線程支持來編譯Perl 5.10?

...POSTIX threads should be supported by FreeBSD 7.1 ... but your system is missing the shared libc_r. 

谷歌搜索的答案想出了安裝gethostnamadr.c這是除了兩件事情精細:

  1. 我不知道在哪裏把這個文件和
  2. 如果配置希望看到libc_r這將如何解決我的問題?

回答

4

爲了能夠在FreeBSD Perl 5.10的線程P5-叉庫7. *您所要做的就是使用patch應用以下補丁。然後,您可以使用-Dusethreads構建perl,或者回答Configure文件問題以啓用線程,並且您很好。我還沒有做過任何重要的測試或比較,但一切都很好,包括線程庫和我所有的Perl程序都能正常工作。

--- hints/freebsd.sh 2008/10/20 04:59:30 1.1 
+++ hints/freebsd.sh 2008/10/20 22:49:29 
@@ -211,6 +211,14 @@ 
exit 1 
;; 

+ 7.*) 
+ # 7.x doesn't install libc_r by default, and Configure 
+ # would fail in the code following 
+ # 
+ # gethostbyaddr_r() appears to have been implemented in 6.x+ 
+ ldflags="-pthread $ldflags" 
+ ;; 
+ 
*) 
if [ ! -r "$lc_r" ]; then 
cat <<EOM >&4 

編輯:我忘了我的參考;點擊此處查看更多信息:http://www.gossamer-threads.com/lists/perl/porters/232518?nohighlight=1#232518

+0

看起來像Perl的freebsd提示文件中的一個錯誤。你有沒有提交回上游到p5p? – mpeters 2009-05-02 20:36:30

2

與Spolsky說「perl幾乎被遺忘」相反...... perl非常活躍。

你還沒有指出你已經安裝了FreeBSD的哪個版本......但是假設你已經安裝了FreeBSD 7.1的一個版本,那麼你沒有安裝線程庫或線程庫不在庫路徑中。

請注意,libc是一個'c'庫,libc_r是該文件的線程安全版本。 2005年穀歌的一些結果表明,libc_r已被棄用。

考慮到這一點,您可能正處於「修訂碰撞」的中間。令人遺憾的是,FreeBSD本身並沒有提供perl的線程安全版本,但是,它們會封裝perl 5.10和幾個後來的版本。我發現這個鏈接有用:

http://www.nabble.com/How---where-to-get-a-Perl-that-has-threads--td22270858.html

你可能也想嘗試安裝它是包含在FreeBSD的

http://www.nabble.com/How---where-to-get-a-Perl-that-has-threads--td22270858.html

+0

我發佈了自己的答案後,我看到了您的回覆。儘管感謝您的鏈接。我也更新了我的問題以反映BSD版本號。 – gvkv 2009-05-02 19:13:13