Статическая линковка vs Динамическая линковка

Без рубрики

Когда на компьютерах места катастрофически не хватало и программы были очень примитивными, тогда действительно было удобно их между собой динамически линковать (говоря по-русски взаимоиспользовать)….

http://dynamic.versusit.ru/Files/2013/425f3629-f5f5-47d3-ac31-28f48e399a68.png

Когда на компьютерах места катастрофически не хватало и программы были очень примитивными, тогда действительно было удобно их между собой динамически линковать (говоря по-русски взаимоиспользовать). Но как только сложность ПО стала расти, то оказалась, что динамическая линковка крайне неудобна.

Более того, результатом этого неудобства стали следующие факты:

— Вы можете лишиться любимой программы просто потому что её больше некому поддерживать или она несовместима с другими компонентами
— Вы не сможете запустить новомодную примочку которая появилась буквально вчера не обновив при этом половину системы

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

Как итог в Windows 7 я могу использовать кучу софта написанного для Windows 95, а в Linux такое в принципе невозможно.

Что вам больше нравится?
Статическая линковка
0%
Динамическая линковка
0%
Проголосовало: 0

Динамическая линковка

Появление пакетных менеджеров в Linux, должно было хоть как-то автоматизировать разруливание динамических зависимостей привело к появлению вот таких тем на форумах т.к. очень скоро оказалось, что версии ПО и библиотек плодятся как кролики, что API очень часто меняется, а у проклятых пользователей возникает нездоровое желание иметь установленным в системе две версии одного и того же ПО. Динамическая линковка и связанная с ней пакетная система проблему не только не решает проблем, но и создает лишние сложности.

Как то, для того чтобы установить в систему блокнотик в 300KB мне в SUSE пришлось поставить софта на 250MB. Блокноту нужна была какая-то библиотека, из которой он дай бог 1-2 функции использовал. Эта библиотека была завязана на другую библиотеку, которая шла в комплекте с программой для записи дисков, а программе для записи дисков был нужен графический тулкит и пара сторонних библиотек. Я думаю уровень маразма понятен.

Вывод

Соответственно устранить систему зависимостей можно только путем статической компиляции. Поясню на примере. Вы в деревне за городом, без интернета или с каналом уровня диал ап и вам понадобится поставить программу тянущую за собой n пакетов размером 200 мб вместо того. Что вы предпочтете, взять программу у друга Васи на флешке или тянуть все по сети?

Не далее как несколько дней назад разработчики Ubuntu скрипя зубами признали, что будущее именно за статической линковкой. Тезис звучит так: «Никаких взаимных зависимостей между пакетами».

Считаю, что динамическая линковка — прошлый век. Она годится только тогда, когда софт не развивается.

Оцените статью
Добавить комментарий