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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Зачем нужна статическая сборка?  (Прочитано 11859 раз)
Blackwanderer
Гость
« : Апрель 17, 2011, 07:01 »

Почитал я форум, и обратил внимание, что каждый второй хочет линковать библиотеки непременно статически. Может я чего в этой жизни не понимаю, но я не вижу ни одного реального преимущества статики, зато проблем с компиляцией и сборкой over 9000. Так в чем смысл?
Записан
merke
Гость
« Ответ #1 : Апрель 17, 2011, 07:20 »

Ну одно из преимуществ это то что тебе не придется с собой таскать кучу библиотек кутишных, они будут уже вшиты в экзешник.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Апрель 17, 2011, 07:23 »

Ну не каждый второй, но желание вполне понятно. На первый взгляд - слинковал и ни от чего не зависишь, работает всегда "и никаких гвоздей!". А с динамическими так не получается, они должны быть в наличии, да правильной версии, да надо заботиться о path. Хотя по мере роста опыта static становится меньше а dynamic больше  Улыбающийся
Записан
Blackwanderer
Гость
« Ответ #3 : Апрель 17, 2011, 07:34 »

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

Ну не каждый второй, но желание вполне понятно. На первый взгляд - слинковал и ни от чего не зависишь, работает всегда "и никаких гвоздей!". А с динамическими так не получается, они должны быть в наличии, да правильной версии, да надо заботиться о path. Хотя по мере роста опыта static становится меньше а dynamic больше  Улыбающийся
Не, оно было бы резонно если бы действительно
Цитировать
работает всегда "и никаких гвоздей!"
. Но ведь это несколько часов компилить библиотеку, да еще не ошибиться с ключами, да потом начинаются проблемы типа "оно все равно в dll лезет", "а оно теперь не линкеутся", "а фича X перестала работать". ИМХО закинуть все dll в папочку к exe или дописать строчку в path куда быстрее и проще.
Записан
Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« Ответ #4 : Апрель 17, 2011, 09:31 »

Зачем задавать вопрос если есть большое желание возражать ответившим?
Все перечисленные вами вопросы это вопросы тех разработчиков которые пытаются разобраться. И в итоге разбираются.
А попробуте объяснить пользователю, что есть какие то пути и их где то надо прописывать.
Значит или делайте полный инсталятор для программ с DLL или собирйте их статически.
А вообще достаточно оин раз собрать static и dynamic для версии Qt и собирать программы в нужной конфигурации.
Да так и построен принцип сборки с исползованием QtCreator.
Записан
Blackwanderer
Гость
« Ответ #5 : Апрель 17, 2011, 10:06 »

Зачем задавать вопрос если есть большое желание возражать ответившим?
Все перечисленные вами вопросы это вопросы тех разработчиков которые пытаются разобраться. И в итоге разбираются.
Если бы моей целью было бы разобраться, я бы создал тему в более подходящем разделе Улыбающийся Здесь скорее желание подискутировать Улыбающийся
Я вполне понимаю в чем смысл статической сборки. Я не понимаю зачем. Почему так много людей хотят работать со статикой? Все причины, которые приводятся (за исключением клинической ситуации с заказчиком а-ля "вот хочу одну экзешку и не еб волнует") выглядят высосанными из пальца и абсолютно не оправдывающими трудозатраты при работе со статикой.
Записан
Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« Ответ #6 : Апрель 17, 2011, 12:11 »

Не понял какие у там особые трудозатраты при работе со статикой.
Все работает без проблем, в том числе и статические плагины.
Записан
Blackwanderer
Гость
« Ответ #7 : Апрель 17, 2011, 17:29 »

Не понял какие у там особые трудозатраты при работе со статикой.
Как минимум компиляция этой самой статики. На моей машине (два ядра по два гига) это занимает 3-4 часа, в течение которых больше ничем заниматься толком нельзя.
Записан
Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« Ответ #8 : Апрель 17, 2011, 17:37 »

У меня 1 ядро и 1 гиг компиляция не более 2 часов.
А можно и на ночь запустить. Спать то надо иногда.
Записан
ufna
Гость
« Ответ #9 : Апрель 17, 2011, 17:39 »

компиляция с верными ключами - у меня лично проходит очень быстро Улыбающийся

а так:
а) статика на мобильные платформы - это самое верное решение - так быстрее грузится и работает, особенно винце
б) статика это "все в одном", и не беспокоишься о версиях библиотек Qt - так проще апдейтить приложение
в) это может быть портейбл приложение в "одном экзешнике", без инсталляторов, архивов, папок и прочего
г) в статику попадает только нужное - меньше размер в целом, чем с .dll
Записан
Blackwanderer
Гость
« Ответ #10 : Апрель 17, 2011, 18:06 »

У меня 1 ядро и 1 гиг компиляция не более 2 часов.
А можно и на ночь запустить. Спать то надо иногда.
Это смотря что вы компилируете. Я - полный набор библиотек, включая WebKit (debug + release). Собственно WebKit и съедает большую часть времени компиляции. И ночью я сплю Показает язык, а вот шум компьютера мне мешает. Так что я никогда не оставляю его на ночь.

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

г) в статику попадает только нужное - меньше размер в целом, чем с .dll
А можно цифры, для примера? То что меньше размер - это понятно, интересно на сколько: на проценты, в разы, на порядки?
Записан
ufna
Гость
« Ответ #11 : Апрель 17, 2011, 19:02 »

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

Цитировать
А можно цифры, для примера? То что меньше размер - это понятно, интересно на сколько: на проценты, в разы, на порядки?

Сборка в статике:
4.1 мб экщешник

Сборка в динамике:
1.2 мб экзешник
QtGui - 9.45
QtCore - 2.43

Итого разница более чем в три раза. Все ресурсы внешние, т.е. только код в экзешнике. Никаких спец. тенхик сжатия не использовано (с ними до 2.5-3Мб сжимается без проблем).
Записан
Akon
Гость
« Ответ #12 : Апрель 17, 2011, 19:15 »

Цитировать
Никогда не работал с мобильными платформами, но звучит вполне правдоподобно. Пожалуй, первый реальный плюс статики.

У статики, естественно, есть плюсы. Из, может быть, неочевидных: в любом приложении GUI Windows, использующем динамическую Qt, также используется и статическая служебная библиотека из состава Qt.

Записан
gogi
Гость
« Ответ #13 : Апрель 18, 2011, 10:19 »

К слову сказать, для статической линковки закрытых программ нужно покупать линецзию на Qt.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #14 : Апрель 18, 2011, 14:06 »

>>К слову сказать, для статической линковки закрытых программ нужно покупать линецзию на Qt.
НЕТ, ищи по форуму, обсуждалось
Записан

Юра.
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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