Esta página - http://labs.qt.nokia.com/2011/10/28/rpath-and-runpath/ - dice acerca del orden de búsqueda de la biblioteca en ld.so:usa RPATH pero no 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
Y entonces sugieren:
Cuando se envía binarios, o bien utilizar rPath y no RUNPATH o garantizar LD_LIBRARY_PATH se establece antes de que se ejecuten.
Por lo tanto, el uso de RPATH
con RUNPATH
es malo porque RUNPATH
tipo de cancela RPATH
carga dinámica de modo indirecto no funciona como se esperaba? Pero ¿por qué entonces RPATH
obsoleto a favor de RUNPATH
?
¿Alguien puede explicar la situación?
problema es que se recomienda RUNPATH sobre RPATH y RPATH está en desuso, pero RUNPATH actualmente no es compatible con todos los sistemas. entonces, ¿qué hago ** hoy ** para hacer que la aplicación funcione? como muestra el artículo de Qt, cuando se usan complementos, es útil usar RPATH más que RUNPATH. entonces la situación es muy confusa aquí. – zaharpopov
@zaharpopov. El mejor enfoque que recomendaría y seguiría es producir aplicaciones que estén bien integradas en la plataforma objetivo, lo que incluiría, entre otras cosas, * no distribuir versiones competidoras de la plataforma bibliotecas compartidas *. Creo que esta es la raíz del problema, y los ataques y las cuchilladas en torno a 'DT_RPATH' y sus amigos son un esfuerzo mal dirigido que trata de eludir el problema en lugar de resolverlo. – chill
esto no es simple. con el problema de Qt, la aplicación quiere una versión más nueva de lib de Qt que existe en el sistema. algunos sistemas tienen anticuados Qt SOs, entonces, ¿qué harías entonces? Creo que tiene sentido distribuir Qt SO con usted si necesita una versión específica – zaharpopov