|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Apr 2010
Messaggi: 67
|
[C] metodo "out of the box" per distribuire un software + libreria .so
Ciao raga,
in questi giorni sto cercando un buon metodo per distribuire un software (già compilato), basato su alcune librerie esterne. Sarebbe bello se l'utilizzatore finale dovesse fare il minor sforzo possibile per far partire il programma: unzip dei materiali e doppio click sull'eseguibile. Ho già visto che qualcuno crea una sottodirectory "libs" che contiene tutti i file .so (librerie dinamiche, ambiente linux) e mi sembra un'ottima idea: lo è anche secondo voi? Non ho problemi nella compilazione ma rimane un punto oscuro: dopo aver "copiato" i file utili da usr/lib (ad esempio) come faccio a linkarli in gcc con il nuovo path, che è in questo caso [mio_programma]/libs? Inoltre, gli header posso tranquillamente lasciarli nella cartella di sistema /include? Vi ringrazio in anticipo per qualsiasi suggerimento, anche solo relativo alla scelta della cartella libs. Ovviamente guide e link sono i benvenuti |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
|
se distribuisci l'eseguibile già compilato non servono gli header, servono solo librerie linkate dinamicamente.. ma ti fa schifo usare il make? O:
|
|
|
|
|
|
#3 | |
|
Member
Iscritto dal: Apr 2010
Messaggi: 67
|
Quote:
|
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
|
nel make puoi mettere nella regola install un semplice cp libreria.so /usr/lib/libreria.so
e visto che ci sei distribuisci anche il sorgente e compila tutto con make ^_^ |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
1) colleghi staticamente le librerie all'eseguibile che quindi conterra' tutto il necessario e non necessitera' di file .so esterni 2) prepari uno script da far lanciare (al posto dell'eseguibile) che prima di far partire il programma vero e proprio imposti tra le altre cose la variabile d'ambiente LD_LIBRARY_PATH in modo che punto alla cartella con i file .so
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Apr 2010
Messaggi: 67
|
Ciao di nuovo a tutti e grazie per le risposte. Purtroppo, vista l'utenza che utilizzerà il software, non è proprio possibile parlare di make e compilazione da sorgenti
Quindi se setto la variabile d'ambiente LD_LIBRARY_PATH con la cartella [mio_programma]/libs, questo path andrà a sovrascrivere quelli già esistenti standard o si aggiungerà semplicemente in coda? |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Sai già la distribuzione target sulla quale andrà installato ?
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Sep 2009
Messaggi: 638
|
Ciao!
Quote:
LD_LIBRARY_PATH = $LD_LIBRARY_PATH; path;path Se vuoi, conosco questo programma... http://www.phunland.com/wiki/Download ...che usa lo script di avvio (che si chiama phun) per settare il path giusto, e poi avvia l'eseguibile vero e proprio (che si chiama phun.bin). |
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Comunque quel path lo puoi settare anche al momento in cui vai a lanciare il programma. All'utente farai lanciare uno script bash invece del programma direttamente, così puoi manipolare quella variabile d'ambiente come più ti aggrada.
|
|
|
|
|
|
#10 |
|
Member
Iscritto dal: Apr 2010
Messaggi: 56
|
E aggiungere $ORIGIN/libs al RPATH?
Così non servono script... |
|
|
|
|
|
#11 | |
|
Member
Iscritto dal: Apr 2010
Messaggi: 67
|
Quote:
Ringrazio tutti per le varie segnalazioni, mi prendo un paio di giorni di studio per le info che mi avete fornito, posterò in caso di problemi! |
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
|
|
|
|
|
#13 |
|
Member
Iscritto dal: Apr 2010
Messaggi: 67
|
Benissimo, come anticipato eccomi di ritorno a martellare
Il .deb è sicuramente un'ottima idea per il futuro, ma vorrei studiarmelo con calma onde evitare ca**ate. Mi ha attirato molto il flag -rpath, tuttavia leggendo la documentazione non ho capito se dev'essere passato al linker durante la compilazione della libreria oppure quando si compila l'eseguibile finale... potreste farmi/linkarmi qualche esempio concreto? Ringrazio in anticipo. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:35.






















