Je travaille sur une application X11. Par défaut, mon application ne nécessite que libX11.so et les bibliothèques standard gcc C et maths. L'application peut étendre les fonctionnalités avec les systèmes audio Xfixes, Xrender et ALSA. Toutefois, ces fonctionnalités (Xfixes, Xrender et ALSA) sont facultatives.Chargement dynamique des objets partagés en utilisant dlopen()
Pour obtenir ce comportement, j'utilise le chargement à l'exécution, c.-à-d. Que libXfixes, libXrender et libasound doivent être dlopen() ed.
Par conséquent, l'application peut fonctionner en l'absence de telles bibliothèques.
Ma question:
What library names should I use when calling dlopen()?
je l'ai fait remarquer que ceux-ci diffèrent de distro à distro.
Par exemple, sur openSUSE 11, ils sont nommés comme suit:
- libXfixes.so
- libXrender.so
- libasound.so
cependant, les noms sur Ubuntu, avoir un numéro de version joint, comme ceci:
- libXfixes.so.3
- libXrender.so.1
- libasound.so.2
Alors tente d'ouvrir "libXfixes.so" échouerait Ubuntu, bien que la lib est évidemment là. Il a juste un numéro de version ci-joint. Alors, comment mon application devrait-elle gérer cela?
Dois-je laisser mon application scanner manuellement/usr/lib/first pour voir quelles bibliothèques nous avons, puis en choisir une appropriée? Ou est-ce que quelqu'un a une meilleure idée?
Merci les gars,
Andy
Voir aussi la réponse ici: http://stackoverflow.com/questions/15951672/loading-linux-libraries-at-runtime – AjayKumarBasuthkar