Estoy trabajando en una aplicación X11 normal.Carga dinámica de objetos compartidos usando dlopen()
De forma predeterminada, mi aplicación solo requiere libX11.so y las bibliotecas gcc C y math estándar. La aplicación puede ampliar las funciones con Xfixes, Xrender y el sistema de sonido ALSA. Sin embargo, estas características (Xfixes, Xrender y ALSA) son opcionales.
Para lograr este comportamiento, estoy utilizando el tiempo de ejecución cargando, es decir, libXfixes, libXrender y libasound serán dlopen() ed.
Por lo tanto, la aplicación puede funcionar en ausencia de tales bibliotecas.
Ahora mi pregunta:
What library names should I use when calling dlopen()?
he observado que estos difieren de una distro a distro.
Por ejemplo, en openSUSE 11, son el nombre lo siguiente:
- libXfixes.so
- libXrender.so
- libasound.so
En Ubuntu, sin embargo, los nombres tener un número de versión adjunto, como este:
- libXfixes.so.3
- libXrender.so.1
- libasound.so.2
lo que tratar de abrir "libXfixes.so" fallaría en Ubuntu, aunque la lib obviamente allí. Solo tiene un número de versión adjunto. Entonces, ¿cómo debería manejar mi aplicación esto?
¿Debo dejar que mi aplicación escanee/usr/lib/first manualmente para ver qué libs tenemos y luego elegir una adecuada? ¿O alguien tiene una mejor idea?
Gracias chicos,
Andy
También véase la respuesta aquí: http://stackoverflow.com/questions/15951672/loading-linux-libraries-at-runtime – AjayKumarBasuthkar