Se vuoi essere sicuro di prescindere dalle librerie di sistema
direttamente lanciando il binario, senza LD_LIBRARY_PAYH, non devi
permettere il linking, in altre parole compilazione statica; non è
impossibile che avrai la necessità di ricompilare in modo statico le
librerie sulle quali ti stai appoggiando per compilare in modo statico
il programma (può essere un po' scocciante).
Un altro modo che io preferisco è quello di scrivere un programma in C
cross-platform che, se è in linux, imposta la LD_LIBRARY_PATH prima di
lanciare una exec per il binario "vero e proprio".
On 11/05/2013 02:46 PM, Meo wrote:
Cari Gulchini,
ho completato da poco il porting di un'applicazione QT da Windows a
Linux (e Mac).
È un software per l'analisi di dati di rivelatori di raggi X, scritto
nell'ambito di un progetto per la costruzione di un satellite per
osservazione astronomica.
Come al solito, gli sviluppatori del laboratorio l'hanno sviluppato
per Windows ma nessuno nel gruppo di ricerca usa Windows (!). Quindi,
per evitare il continuo riavvio del computer o l'uso costante di
macchine virtuali, ho chiesto i sorgenti, risolto un paio di piccole
incompatibilità e compilato su Linux e Mac.
Ora vorrei distribuire i binari per evitare che tutti quanti se lo
debbano compilare. Il problema è l'enorme varietà di piattaforme che i
miei colleghi usano, da Scientific Linux dell'era del cucco alle
nuovissime Ubuntu per quanto riguarda Linux, più ovviamente i Mac.
Quale strategia mi consigliereste per distribuire un pacchetto con
tutte le librerie necessarie (Qt*, gsl...) senza cozzare con quelle
eventualmente installate nel sistema?
La strategia usata finora è installare tutto in una directory,
comprese le varie librerie grafiche, e lanciare il programma
attraverso uno script bash che cambia il LD_LIBRARY_PATH in modo da
trovare le giuste librerie. Ho compilato il software su Mac e due
versioni di linux (32 e 64bit) , entrambe più vecchie della più
vecchia usata dai colleghi in modo da evitare le incompatibilità di
libc e famiglia, e le cose sembrano funzionare. Ma è un sistema un po'
arraffazzonato, non scevro da sporadici conflitti, e mi chiedevo se ci
fosse un sistema un po' più standard e pulito per fare questo lavoro,
possibilmente che usi cross-compilazione per ridurre il numero di
macchine virtuali da avviare...
Grazie in anticipo per i vostri suggerimenti,
Matteo
--
*********************************************
Matteo Bachetti
www.matteobachetti.it <http://www.matteobachetti.it>
"I would love to change the world,
but they won't give me the source code"
*********************************************
_______________________________________________
Gulchelp mailing list
[email protected]
http://www.gulch.crs4.it/cgi-bin/mailman/listinfo/gulchelp
_______________________________________________
Gulchelp mailing list
[email protected]
http://www.gulch.crs4.it/cgi-bin/mailman/listinfo/gulchelp