He notado un error con las aplicaciones que dependen de las bibliotecas compartidas: si falta alguna dependencia, la aplicación fallará en el tiempo de carga incluso si el usuario no tiene la intención de utilizar la funcionalidad de la dependencia.Bibliotecas compartidas opcionales
Me gustaría que mis aplicaciones sean mejores que eso. Idealmente, en lugar de distribuir tantos como n paquetes diferentes, donde n = numberOfSupportedArchitectures * numberOfSupportedOS * Π (para cada biblioteca compartida) (el número de alternativas) Detectaría una excepción de "error al cargar bibliotecas compartidas" emitida en el momento de la carga cuando la biblioteca que quisiera, pero no es necesaria, se encuentra ausente, luego continúo la ejecución de una manera que simplemente evita el uso de los enlaces no resueltos. Pero obviamente no hay excepción que uno pueda atrapar. Si falta algo, todo se cae antes de que main() incluso comience.
Lo más cerca que puedo de tener control sobre el proceso de carga es resolver todos los enlaces con dlopen, dlsym y demás. Tan tedioso ¿Esperaría que ya hubiera una biblioteca disponible para hacer eso por mí?
Observo que esto no sería un problema en una distribución basada en fuente ni en Windows. Iba a poner paquetes binarios en las etiquetas, pero aparentemente no tengo el representante para acuñar etiquetas.
'parece que la solución más elegante estaría en refinar el comportamiento de los cargadores/enlazadores del sistema operativo.
O ejecute el programa a través de un script que establece la variable de entorno 'LD_LIBRARY_PATH'. – rodrigo
Las alternativas para cargar la biblioteca no son solo versiones diferentes de la cosa, tendrán interfaces completamente diferentes, o estarán ausentes del todo y la funcionalidad que proporcionarían simplemente no se manifestaría en el UX. Aunque esto puede proporcionar una vía para manejar bibliotecas ausentes; Podría crear bibliotecas de shill inertes con la misma interfaz que los objetivos faltantes, donde, si faltan los objetivos, podrían satisfacer la necesidad del vinculador de vincularse a algo. Parece tonto sin embargo. – mako