Я создал коммуникационную библиотеку, которая статически связана с несколькими различными приложениями. Библиотека обеспечивает поддержку связи через различные виды оборудования. Некоторое оборудование поддерживается поставщиком через общую библиотеку. В системах без такого оборудования общая библиотека недоступна.
Ранее мы справились с этим, скомпилировав двойные версии библиотеки связи и приложений. Это, однако, не очень практично, поэтому я подумал об использовании более динамичной коммуникационной библиотеки, которая пытается загрузить библиотеку вендора с помощью dlopen () / dlsym (), если она доступна. Кажется, это хорошо работает. Но проблема в том, что каждый, кто использует мою библиотеку, должен будет указать опцию -ldl при связывании своего приложения с моей библиотекой. Даже если это небольшая неприятность, мне интересно, как это обычно решается.
Возможно ли каким-либо образом создать статическую библиотеку, которая будет автоматически (во время компиляции или во время выполнения) вносить необходимую разделяемую библиотеку?
Считается ли хорошей практикой разрешать статическим библиотекам зависеть от разделяемых библиотек?
РЕДАКТИРОВАТЬ: Я знаю, что libtool, вероятно, мог бы решить эту проблему, но это все равно изменило бы процесс сборки для всех приложений еще больше, чего я бы предпочел избежать.
РЕДАКТИРОВАТЬ 2: Целевые платформы в основном Linux и Solaris. Gcc в качестве компилятора.