Я работаю над простым приложением X11.
По умолчанию моему приложению требуется только libX11.so и стандартный gcc C и математические библиотеки.
Приложение может расширять функции с Xfixes, Xrender и ALSA звуковой системой.
Однако эти функции (Xfixes, Xrender и ALSA) являются необязательными.
Чтобы добиться такого поведения, я использую загрузку во время выполнения, т.е. libXfixes, libXrender и libasound должны быть dlopen () ed.
Следовательно, приложение может функционировать при отсутствии таких библиотек.
Теперь мой вопрос:
What library names should I use when calling dlopen()?
Я заметил, что они различны в разных дистрибутивах.
Например, в openSUSE 11 они названы так:
- libXfixes.so
- libXrender.so
- libasound.so
Однако в Ubuntu к именам добавлен номер версии, например:
- libXfixes.so.3
- libXrender.so.1
- libasound.so.2
Так что попытка открыть "libXfixes.so" провалилась бы в Ubuntu, хотя lib, очевидно, там есть.
К нему просто прикреплен номер версии. Так как же мое приложение должно справиться с этим?
Должен ли я позволить моему приложению сканировать / usr / lib / сначала вручную, чтобы увидеть, какие библиотеки у нас есть, а затем выбрать подходящий? Или у кого-нибудь есть идея получше?
Спасибо, ребята,
Энди