Newsgroup: it.comp.lang.perl
Titolo: compilare perl con librerie altrui

Ciao a tutti, ho la necessita' di ricompilare perl (sotto linux)
aggiungendo un link statico ad una libreria (.so) che mi e' data da una
azienda (e quindi non ne ho il codice). 
Qualcuno puo' darmi una mano per le opzioni di configurazione per
includere staticamente questa libreria nell'eseguibile di perl?
Grazie mille.
d
-- 
Davide Cittaro
Drop WINDOWS if you want to reply

 azienda (e quindi non ne ho il codice).
Inorridisco (si fa per dire) al solo pensare di voler includere staticamente 
una libreria proprietaria all'interprete perl.

 wrote:

Eh, e' un po' complicato da spiegare ma:
- Le politche IT del mio posto di lavoro vogliono passare solo a freeBSD
- I binari dell'applicazione in questione si possono far girare su
freeBSD grazie a brandelf
- uno script in perl dell'applicazione in questione fa uso di
DynaLoader.pm che chiama una libreria .so fornia dalla casa
dell'applicazione.
- sotto freeBSD non c'e' verso di caricare questa libreria senza
incorrere in un core dump
- l'unica idea e' ricompilare perl con tale libreria linkata
staticamente e poi usare (almeno per questo programma) il perl di linux,
lanciato tramite brandelf, per tutti gli script del prgramma
proprietario...



Prima ancora che poco raccomandabile, la cosa è proprio impossibile (o 
perlomeno estremamente complicata) perché non puoi linkare staticamente 
una libreria a linkaggio dinamico, come quella di cui disponi tu ("so" 
sta per "shared object").
Io proverei ad alterare lo script Perl sostituendo Dynaloader con 
C::Dynalib:
http://search.cpan.org/~jtobey/C-DynaLib-0.55/
o ancora a scrivere un thin wrapper in C linkato (dinamicamente) alla 
tua libreria .so, che poi andrebbe richiamato dallo script Perl, o, 
meglio ancora, proverei a scrivere tale wrapper mediante Inline::C.
In riferimento a quest'ultima ipotesi, esiste proprio una "ricetta" 
specifica nel cookbook di Inline::C:
http://search.cpan.org/~ingy/Inline-0.44/C/C-Cookbook.pod#Exposing_Shared_Libraries
(Se funziona, i ringraziamenti vanno tutti a Brian Ingerson).
Ciao,
Emanuele.
P.S.
Se posso esprimere un'opinione non richiesta, da quando esiste il kernel 
2.6 non vedo ragioni per preferire *BSD a Linux.

 C::Dynalib: 
http://search.cpan.org/~jtobey/C-DynaLib-0.55/
Mmm, la cosa si fa interessante, vo a vedere... > > o ancora a scrivere
un thin wrapper in C linkato (dinamicamente) alla > tua libreria .so,
che poi andrebbe richiamato dallo script Perl, o, > meglio ancora,
proverei a scrivere tale wrapper mediante Inline::C. > > In riferimento
a quest'ultima ipotesi, esiste proprio una "ricetta" > specifica nel
cookbook di Inline::C: >
http://search.cpan.org/~ingy/Inline-0.44/C/C-Cookbook.pod#Exposing_Share
d_Libraries > > (Se funziona, i ringraziamenti vanno tutti a Brian
Ingerson). >
Vado a vedere anche questo > Ciao, > Emanuele. > > P.S. > Se posso
esprimere un'opinione non richiesta, da quando esiste il kernel > 2.6
non vedo ragioni per preferire *BSD a Linux.
Eh, non dirlo a me. Il mio capo (che ha scritto anche parte del codice
di freeBSD) non ama proprio il pinguino, dice che sta diventando troppo
commerciale e che e' insicuro... Che rispondergli?
Grazie


 commerciale e che e' insicuro... Che rispondergli?
Per quanto riguarda le prestazioni, fagli vedere questo:
http://bulk.fefe.de/scalability/
FreeBSD è niente male, ma è comunque inferiore a Linux 2.6 quasi in ogni 
benchmark di scalabilità (se non vuoi esaminare tutti i benchmark, salta 
direttamente alle conclusioni a pie' di pagina).
Per quanto riguarda la natura suppostamente commerciale di Linux, ci 
sono distribuzioni come la Debian, che sono talmente dure e pure che non 
  accettano neanche il JDK della Sun (per problemi di licenza).
Questo è il "Debian Social Contract":
http://www.debian.org/social_contract
http://www.it.debian.org/social_contract
Difficilmente riesco ad immaginare qualcosa di meno "commerciale"...
Infine per quanto riguarda la sicurezza, Linux offre migliori garanzie 
grazie al più alto numero di utenti.
Poi, per chi è proprio paranoico, c'è sempre questo:
http://www.nsa.gov/selinux/
Ciao,
Emanuele.