Questa pagina - http://labs.qt.nokia.com/2011/10/28/rpath-and-runpath/ - dice di ordine per la ricerca in biblioteca ld.so:usa RPATH ma non RUNPATH?
Unless loading object has RUNPATH:
RPATH of the loading object,
then the RPATH of its loader (unless it has a RUNPATH), ...,
until the end of the chain, which is either the executable
or an object loaded by dlopen
Unless executable has RUNPATH:
RPATH of the executable
LD_LIBRARY_PATH
RUNPATH of the loading object
ld.so.cache
default dirs
E poi suggeriscono:
Quando si invia i binari, utilizzare RPATH e non RunPath o garantire LD_LIBRARY_PATH è impostato prima che vengano eseguiti.
Quindi, utilizzando RPATH
con RUNPATH
è un male perché RUNPATH
kind-of annulla RPATH
in modo indiretto il caricamento dinamico non funziona come previsto? Ma perché allora lo RPATH
è stato deprecato a favore di RUNPATH
?
Qualcuno può spiegare la situazione?
problema è, RUNPATH è raccomandato su RPATH, e RPATH è deprecato, ma RUNPATH non è attualmente supportato da tutti i sistemi. quindi cosa faccio ** oggi ** per far funzionare l'applicazione? come mostra l'articolo di Qt, quando si usano i plugin è utile usare RPATH più di RUNPATH. quindi l'intera situazione è molto confusa qui – zaharpopov
@zaharpopov, L'approccio migliore che consiglierei e seguirmi è quello di produrre applicazioni che siano ben integrate nella piattaforma di destinazione, che includerebbe, tra le altre cose, * non distribuire versioni concorrenti della piattaforma librerie condivise *. Penso che questa sia la radice del problema e gli hack e le barre attorno a 'DT_RPATH' e gli amici sono uno sforzo mal diretto che cerca di superare il problema invece di risolverlo. – chill
questo non è semplice. con il problema Qt l'app voleva una versione più recente delle librerie Qt che esistesse sul sistema. alcuni sistemi hanno obsoleto Qt SO, quindi cosa faresti allora? Penso che abbia senso distribuire Qt SOs con te se hai bisogno di una versione specifica – zaharpopov