2009-05-02 12 views
5

Sto cercando di compilare Perl 5.10 sul mio assistente 7.1 di FreeBSD (BSD), ma quando ho eseguito lo script di configurazione e rispondere alle domande che ricevo il seguente errore:Come faccio a compilare Perl 5.10 con il supporto del thread in FreeBSD 7.1?

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

Googling per la risposta si avvicinò con l'installazione gethostnamadr.c che va bene, tranne per due cose:

  1. non so dove mettere questo file e
  2. Come funziona questo risolvere il mio problema se Configura vuole vedere libc_r?

risposta

4

Per abilitare Perl 5.10 thread su FreeBSD 7. * tutto ciò che devi fare è applicare la seguente patch usando patch. Puoi quindi creare perl con -Dusethreads o rispondere alle domande del file Configure per abilitare il threading e sei a posto. Non ho ancora effettuato test o confronti significativi ma tutto si compila bene incluse le librerie di thread e tutti i miei programmi Perl funzionano bene.

--- 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 

MODIFICA: Ho dimenticato il mio riferimento; controllare qui per ulteriori informazioni: http://www.gossamer-threads.com/lists/perl/porters/232518?nohighlight=1#232518.

+0

Sembra un bug nel file dei suggerimenti freebsd di Perl. Hai inviato questo a monte di p5p? – mpeters

+0

Non l'ho presentato perché non è la mia soluzione. Sono abbastanza sicuro che sia il Perl che il BSD ne sono a conoscenza perché ci sono alcuni indizi che verranno riparati per 7.2. – gvkv

2

Contrariamente a Spolsky che ha detto "Perl è praticamente dimenticato" ... Perl è molto vivo.

Non hai indicato quale versione di FreeBSD hai installato ... Ma supponendo che tu abbia installato un min di FreeBSD 7.1, non hai installato le librerie di threads o le librerie di thread non si trovano nel percorso della libreria.

NOTA che libc è una libreria "c" generale e che libc_r è la versione thread-safe di quel file. Alcuni dei risultati di google del 2005 suggeriscono che libc_r è stato deprecato.

Con questo in mente è probabile che tu sia nel mezzo di una "collisione di revisione". Purtroppo FreeBSD non fornisce la versione thread-safe di perl nativamente, tuttavia, fanno il pacchetto perl 5.10 e diverse revisioni successive. Ho trovato questo link per essere utile:

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

si potrebbe anche voler provare a installare la libreria p5-forcella che è incluso con FreeBSD

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

+0

Ho visto la tua risposta dopo aver postato la mia risposta. Grazie per i collegamenti però. Ho anche aggiornato la mia domanda per riflettere il numero di versione di BSD. – gvkv