Si nadie más tiene ganas de darle un golpe a esto, también puedo inyectar algo.
Voy a hacer algunas suposiciones.
- Usted está distribuyendo una aplicación de origen binario/cerrado
- quiere distribuir por sí mismo
lo que excluye toda "acaba de dejar la distro/usuarios construir para su instalación a sí mismos".
Mirando cómo otros han resuelto problemas similares Puedo ver que es común incluir las bibliotecas compartidas con su aplicación y luego usar un cargador/envoltorio, como usted lo quiere llamar, script que modifica el entorno antes de iniciar el solicitud. Específicamente, modifican LD_LIBRARY_PATH para incluir la carpeta/lib incluida con la aplicación.
El script podría ser tan simple como.
#!/bin/sh
LD_LIBRARY_PATH=./lib ./myAppReal
Así es como he resuelto distribuir una aplicación de Qt4 a los usuarios que tienen distribuciones que no envía más nuevo que Qt-3.3.6 (en 2009 ... en serio). Edit: También podría decir por usuarios me refiero a la gente de 5-ish en la empresa que paga por desarrollo, fallo de especificación de nuestra parte sin pedirles que sean más específicos cuando dijeron multiplataforma en sistemas operativos modernos.
Ahora alguien probablemente encontrará una docena de cosas mal con esto, pero eso es bueno, puedo actualizar y aprender sobre la marcha.
EDIT: Como JimR dijo que esto conlleva implicaciones de seguridad, si deja la carpeta libs en el mundo escribible alguien puede usarla para inyectar código malicioso en su aplicación. Dependiendo de cómo planeas desplegarlo, puede o no ser un problema real, pero debes ser consciente de ello.
Buena pregunta, usted puede enlazar o enviar estáticamente las bibliotecas con la aplicación y tener un iniciador/envoltorio que modifique LD_LIBRARY_PATH. Pero espero que alguien escriba una mejor respuesta. –
¿Es posible vincular, por ejemplo, libboost_thread.so.1, siempre que todos los 1.x.x sean compatibles con binarios? No estoy seguro acerca de esta biblioteca en particular, pero algunos están versionados de esta manera. – rasmus
@rasmus, googleando Encontré listas de correo de 2009 diciendo que 'no hay ninguna garantía de compatibilidad binaria, me temo'. Aparentemente puede haber compatibilidad binaria casual pero no está garantizada y las aplicaciones deben vincular con la versión exacta. –