Я работал с SFML, я скомпилировал небольшую тестовую программу и добавил опцию связывания -lsfml-audio
. Затем я использовал ldd ./program
, чтобы увидеть динамические библиотеки, на которые он ссылался. Удивительно, но их было много, ни один из них я не выбрал вручную в моем make-файле и не использовал pkg-config --libs
.
Я начал читать об общих библиотеках и привел небольшой пример, чтобы развеять мои сомнения. Однако у меня есть вопрос:
почему некоторым библиотекам нужно, чтобы вы добавляли зависимости в ваш make-файл (вручную или с помощью сценария вроде
pkg-config
) и других {{1 }} библиотеки автоматически связывают свои зависимости?
Когда вы создаете свою динамическую библиотеку, это так же просто, как добавление правильных параметров -ldependency
в g ++ -shared ...
, чтобы пользователю не пришлось вручную добавлять зависимости позже. Почему многие из доступных библиотек этого не делают?
Я думаю, это должно быть связано с возможностью точной настройки, какие библиотеки подключаются и тому подобное.