Я поддерживаю нашу собственную библиотеку инфраструктуры — давайте назовем это libcluracan, Эта библиотека должна быть статически связана, потому что она не существует на внешних компьютерах, где используется код.
Это означает, что вместо создания libcluracan.so файл с помощью компоновщика я создаю libcluracan.a файл с использованием ar команда
Теперь я пытаюсь добавить новые функции в libcluracan, но требует соединения с внешней библиотекой — в частности -lfltk, но конкретика не важна. Важно то, что я могу предположить, что внешние компьютеры имеют эту библиотеку (и любую другую общедоступную библиотеку, которая мне нужна).
Самая большая проблема в том, что я не могу изменить способ, которым программисты компилируют (ну, связывают) свой код.
Если бы мы использовали динамический libcluracan.so библиотека я бы просто добавил -lfltk к компоновщику и забудьте об этом — программисты будут продолжать связываться с -lcluracan и получить -lfltk автоматически.
Мне нужно найти способ сделать то же самое с нашей статической libcluracan.a библиотека.
TL; DR
Есть ли способ создать статический .a библиотека, которая автоматически связывается с другой динамикой .so библиотека когда используется?
Самая большая проблема в том, что я не могу изменить способ, которым программисты компилируют (ну, связывают) свой код.
То есть в самом деле большая проблема. Ваши внутренние программисты должны использовать make (или аналогичная автоматизированная система сборки), и изменение будет тривиальным.
Нет никакого способа достичь того, что вы хотите в произвольной системе UNIX.
Если вы используете набор инструментов GNU, и в частности GNU-ld или goldЗатем вы можете достичь того, что вы хотите, связавшись с libcluracan.so, где libcluracan.so это не общая библиотека, а скрипт компоновщика, который выглядит следующим образом:
GROUP ( libcluracan.a libfltk.so )
Других решений пока нет …