Каковы про и недостатки статичного соединения библиотеки?

Я хочу выпустить приложение, которое я разработал как хобби и для Linux и для Windows. Это приложение зависит от повышения (и возможно другие библиотеки). Норма для этого вида приложения (шахматный механизм) должна обеспечить только исполняемый файл и возможно некоторые файлы помощника.

Я жесткий это была бы хорошая идея статически связать библиотеки, таким образом, исполняемый файл не будет иметь никаких зависимостей. Таким образом, конечный пользователь может просто поместить исполняемый файл в каталог и начать использовать его.

Однако при проведении некоторого исследования онлайн я нашел некоторые отрицательные комментарии о статичном соединении библиотек, некоторые даже утверждающие, что приложение со статически связанными библиотеками будет едва портативным, означая, что оно только работало бы на моей системе очень аналогичных систем.

Таким образом, каковы за и против статичного соединения библиотеки?

Я уже знаю, что исполняемый файл будет больше. Но я не вижу, почему это подало бы мою менее портативную заявку.

11
задан Mathieu Pagé 16 March 2010 в 15:29
поделиться

4 ответа

Плюсы:
Нет зависимостей.

Минусы:
Более высокое использование памяти, так как ОС больше не может использовать общую копию библиотеки.
Если библиотеку необходимо обновить, ваше приложение необходимо перестроить. Это вдвойне важно для библиотек, в которых затем есть исправления безопасности.

Конечно, более серьезной проблемой для переносимости является отсутствие распространения исходного кода.

5
ответ дан 3 December 2019 в 11:20
поделиться

Допустим, статическая библиотека «A», которую вы включаете, зависит от функции «B». Если эта зависимость не может быть выполнена целевой системой, ваша программа не будет работать.

Но если вы используете динамическое связывание, пользователь может установить другую версию библиотеки «A», которая использует функцию «C» вместо «B», чтобы она могла работать успешно.

1
ответ дан 3 December 2019 в 11:20
поделиться

Если вы связываете библиотеки статически, если вы не добавляете умные средства, чтобы также проверять систему пользователя на наличие библиотек, которые вы связали, вы ' повторно заблокируйте ваше приложение, чтобы использовать эти версии библиотек, пока вы не обновите свой исполняемый файл. Происходят дыры в безопасности и происходят обновления. (Для шахматного движка проблем может быть не так уж и много, но кто знает.)

0
ответ дан 3 December 2019 в 11:20
поделиться

В случае динамически подключаемых библиотек, если библиотека говорит, что X, с которой вы связались, недоступна в пользовательской системе, ваш код неуклюже вылетает, оставляя конечного пользователя в недоумении.
Принимая во внимание, что в случае статических библиотек все объединено в исполняемый файл, поэтому условия, подобные выше, могут не произойти, исполняемый файл, однако, будет очень громоздким.

Однако указанная выше проблема в динамически подключаемых библиотеках может быть устранена с помощью динамической загрузки .

0
ответ дан 3 December 2019 в 11:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: