Russian Qt Forum
Ноябрь 22, 2024, 18:44 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Голосование
Вопрос: Насколько нужна сборка приложения "без зависимостей"
Очень нужна - 3 (37.5%)
Нужна, да не получается - 1 (12.5%)
Не нужна, должен быть инсталл - 2 (25%)
Ваш вариант - 2 (25%)
Всего голосов: 8

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: Насколько нужна сборка приложения "без зависимостей"  (Прочитано 20096 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Июль 19, 2016, 12:20 »

Добрый день

"Без зависимостей" означает что никакой инсталлятор не требуется, пользователь может свободно копировать с одной машины на другую. Копироваться может файл или папка/мамка, т.е, линковать статически необязательно.
Записан
kai666_73
Крякер
****
Offline Offline

Сообщений: 319


Просмотр профиля
« Ответ #1 : Июль 19, 2016, 13:35 »

Windows: однозначно, проще (и IMHO правильней) без зависимостей, скопировал папку и все. Install также не возбраняется, но тоже без зависимостей, то есть все либы с собой.
*NIX: install only - репозитарий, deb, rpm...
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #2 : Июль 19, 2016, 13:47 »

Стараемся собирать под винду без зависимостей, насколько это возможно.
Обычно даже работает Улыбающийся
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Bepec
Гость
« Ответ #3 : Июль 19, 2016, 14:10 »

Хочется, но зачастую не нужна Улыбающийся
Хотя все итак понимают минусы вроде размера => проблем с обновлением.
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #4 : Июль 19, 2016, 14:43 »

Хотя все итак понимают минусы вроде размера => проблем с обновлением.

Что Вы иметь в виду? Улыбающийся


Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #5 : Июль 19, 2016, 15:31 »

думаю, он о статической линковке
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #6 : Июль 19, 2016, 16:14 »

Windows: однозначно, проще (и IMHO правильней) без зависимостей, скопировал папку и все.
Ну что проще - это точно. Но правильней ли? Ведь dll-ки в папке будут грузиться только для данного приложения. Др словами если есть N папок с одинаковыми dll (и приложения из них запущены)- в памяти будет N копий всех dll
Записан
Bepec
Гость
« Ответ #7 : Июль 19, 2016, 16:32 »

Таки да, я о статической линковке.
Ведь вроде без зависимостей - это как раз статика. а динамическая линковка и есть с зависимостями.

to Igors
Вот когда вы сделаете dll-ку в 500 мб, это возможно будет вызывать проблемы. А пока их размер < 50 мб это несущественно. К тому же динамика даёт возможность иметь на компьюторе много версий одних библиотек и без путаницы.

Хотя конечно можно было бы сделать менеджера dll-лок, который бы регистрировал версию/размер и прочие признаки и по которым отдавал бы каждому приложению запрашиваемые dll-ки, но это требует разработки стандарта Улыбающийся
Записан
kai666_73
Крякер
****
Offline Offline

Сообщений: 319


Просмотр профиля
« Ответ #8 : Июль 19, 2016, 16:52 »

Windows: однозначно, проще (и IMHO правильней) без зависимостей, скопировал папку и все.
Ну что проще - это точно. Но правильней ли? Ведь dll-ки в папке будут грузиться только для данного приложения. Др словами если есть N папок с одинаковыми dll (и приложения из них запущены)- в памяти будет N копий всех dll
Такова плата за простоту. Вот представьте что будет если в систему установить несколько программ, каждая из которых использует Qt-либы, причем разные (64/32/мингв/mcvcXXXX)

В случае N папок с одинаковыми dll... Был у нас такой программный комплекс - порядка 60-и екзешников и 200-т библиотек; и был к этому добру инсталлер, которым никто не пользовался, а тупо все копировали в одну папку.
К чему это я... а к тому, что если библиотеки сторонние, то лучше подстраховаться и подсунуть в папку запуска именно те с которыми производилась сборка. Если же библиотеки свои, то за каким х-м дублировать их в N папок?
Записан
ssoft
Программист
*****
Offline Offline

Сообщений: 584


Просмотр профиля
« Ответ #9 : Июль 19, 2016, 17:11 »

Смотря какой софт пишется.
Если это единственный процесс, например, десктоп приложение, мобильный сервис и т.п. - статическая линковка может быть и оправдана.
Если у вас распределенная система с десятками (сотнями/тысячами) сложных процессов, то ИМХО однозначно динамическая линковка.

На счет наличия инсталлятора - то лучше иго иметь, чем не иметь. Можно конечно и целую папку/мамку копировать, но бывает нужно какой-нибудь скрипт запустить, чтобы рабочее окружение для приложения сформировать, чтобы нужные версии библиотек использовались или еще чего. Кроме того, инсталлятор позволяет следить за обновлением версий, конвертацией форматов данных и т.п.
Записан
qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #10 : Июль 19, 2016, 23:19 »

Если это единственный процесс, например, десктоп приложение, мобильный сервис и т.п. - статическая линковка может быть и оправдана.

статику неудобно обновлять - большой размер

Записан
vipet
Бывалый
*****
Offline Offline

Сообщений: 452


Просмотр профиля
« Ответ #11 : Июль 20, 2016, 00:03 »

Если это единственный процесс, например, десктоп приложение, мобильный сервис и т.п. - статическая линковка может быть и оправдана.

статику неудобно обновлять - большой размер


я считаю статическая сборка предпочтительнее динамической в большинстве случаев. Инсталлятор в разы меньше весит. Обновлять - так все равно Qt раз в 3 месяца обновляется, дллки новые. Если же есть несколько исполняемых файлов у продукта, то тогда, конечно, размер статики меньше динамики не будет. Но за статическую сборку надо платить (в прямом смысле).
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #12 : Июль 20, 2016, 10:13 »

Если же библиотеки свои, то за каким х-м дублировать их в N папок?
Так часто получается если приложение что-то считает в течение длительного/ощутимого времени. Юзер может открыть вторую копию приложения и запустить др расчеты, это нормально

я считаю статическая сборка предпочтительнее динамической в большинстве случаев. Инсталлятор в разы меньше весит.
А как тогда с плагинами приложения (если сборка статическая)? И что тогда делает инсталл?
Записан
Bepec
Гость
« Ответ #13 : Июль 20, 2016, 11:36 »

Инсталл подчищает хвосты. А то сейчас пошли приложения, напакостят в системе/реестре/папках пользователя, удалятся и оставляют свой мусор Улыбающийся
Записан
kai666_73
Крякер
****
Offline Offline

Сообщений: 319


Просмотр профиля
« Ответ #14 : Июль 20, 2016, 11:47 »

Если же библиотеки свои, то за каким х-м дублировать их в N папок?
Так часто получается если приложение что-то считает в течение длительного/ощутимого времени. Юзер может открыть вторую копию приложения и запустить др расчеты, это нормально
Что мешает юзеру запустить вторую копию приложения из той же папки?
Записан
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.058 секунд. Запросов: 25.