Russian Qt Forum

Разное => Говорилка => Тема начата: Blackwanderer от Апрель 17, 2011, 07:01



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


Название: Re: Зачем нужна статическая сборка?
Отправлено: merke от Апрель 17, 2011, 07:20
Ну одно из преимуществ это то что тебе не придется с собой таскать кучу библиотек кутишных, они будут уже вшиты в экзешник.


Название: Re: Зачем нужна статическая сборка?
Отправлено: Igors от Апрель 17, 2011, 07:23
Ну не каждый второй, но желание вполне понятно. На первый взгляд - слинковал и ни от чего не зависишь, работает всегда "и никаких гвоздей!". А с динамическими так не получается, они должны быть в наличии, да правильной версии, да надо заботиться о path. Хотя по мере роста опыта static становится меньше а dynamic больше  :)


Название: Re: Зачем нужна статическая сборка?
Отправлено: Blackwanderer от Апрель 17, 2011, 07:34
Ну одно из преимуществ это то что тебе не придется с собой таскать кучу библиотек кутишных, они будут уже вшиты в экзешник.
Не понял. А в чем принципиальная разница?

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


Название: Re: Зачем нужна статическая сборка?
Отправлено: Mikhail от Апрель 17, 2011, 09:31
Зачем задавать вопрос если есть большое желание возражать ответившим?
Все перечисленные вами вопросы это вопросы тех разработчиков которые пытаются разобраться. И в итоге разбираются.
А попробуте объяснить пользователю, что есть какие то пути и их где то надо прописывать.
Значит или делайте полный инсталятор для программ с DLL или собирйте их статически.
А вообще достаточно оин раз собрать static и dynamic для версии Qt и собирать программы в нужной конфигурации.
Да так и построен принцип сборки с исползованием QtCreator.


Название: Re: Зачем нужна статическая сборка?
Отправлено: Blackwanderer от Апрель 17, 2011, 10:06
Зачем задавать вопрос если есть большое желание возражать ответившим?
Все перечисленные вами вопросы это вопросы тех разработчиков которые пытаются разобраться. И в итоге разбираются.
Если бы моей целью было бы разобраться, я бы создал тему в более подходящем разделе :) Здесь скорее желание подискутировать :)
Я вполне понимаю в чем смысл статической сборки. Я не понимаю зачем. Почему так много людей хотят работать со статикой? Все причины, которые приводятся (за исключением клинической ситуации с заказчиком а-ля "вот хочу одну экзешку и не еб волнует") выглядят высосанными из пальца и абсолютно не оправдывающими трудозатраты при работе со статикой.


Название: Re: Зачем нужна статическая сборка?
Отправлено: Mikhail от Апрель 17, 2011, 12:11
Не понял какие у там особые трудозатраты при работе со статикой.
Все работает без проблем, в том числе и статические плагины.


Название: Re: Зачем нужна статическая сборка?
Отправлено: Blackwanderer от Апрель 17, 2011, 17:29
Не понял какие у там особые трудозатраты при работе со статикой.
Как минимум компиляция этой самой статики. На моей машине (два ядра по два гига) это занимает 3-4 часа, в течение которых больше ничем заниматься толком нельзя.


Название: Re: Зачем нужна статическая сборка?
Отправлено: Mikhail от Апрель 17, 2011, 17:37
У меня 1 ядро и 1 гиг компиляция не более 2 часов.
А можно и на ночь запустить. Спать то надо иногда.


Название: Re: Зачем нужна статическая сборка?
Отправлено: ufna от Апрель 17, 2011, 17:39
компиляция с верными ключами - у меня лично проходит очень быстро :)

а так:
а) статика на мобильные платформы - это самое верное решение - так быстрее грузится и работает, особенно винце
б) статика это "все в одном", и не беспокоишься о версиях библиотек Qt - так проще апдейтить приложение
в) это может быть портейбл приложение в "одном экзешнике", без инсталляторов, архивов, папок и прочего
г) в статику попадает только нужное - меньше размер в целом, чем с .dll


Название: Re: Зачем нужна статическая сборка?
Отправлено: Blackwanderer от Апрель 17, 2011, 18:06
У меня 1 ядро и 1 гиг компиляция не более 2 часов.
А можно и на ночь запустить. Спать то надо иногда.
Это смотря что вы компилируете. Я - полный набор библиотек, включая WebKit (debug + release). Собственно WebKit и съедает большую часть времени компиляции. И ночью я сплю :P, а вот шум компьютера мне мешает. Так что я никогда не оставляю его на ночь.

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

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


Название: Re: Зачем нужна статическая сборка?
Отправлено: ufna от Апрель 17, 2011, 19:02
ну вебкит это да, подольше. Но все равно - поставил и радуйся жизни, просто комп помощнее :)

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

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

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

Итого разница более чем в три раза. Все ресурсы внешние, т.е. только код в экзешнике. Никаких спец. тенхик сжатия не использовано (с ними до 2.5-3Мб сжимается без проблем).


Название: Re: Зачем нужна статическая сборка?
Отправлено: Akon от Апрель 17, 2011, 19:15
Цитировать
Никогда не работал с мобильными платформами, но звучит вполне правдоподобно. Пожалуй, первый реальный плюс статики.

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



Название: Re: Зачем нужна статическая сборка?
Отправлено: gogi от Апрель 18, 2011, 10:19
К слову сказать, для статической линковки закрытых программ нужно покупать линецзию на Qt.


Название: Re: Зачем нужна статическая сборка?
Отправлено: lit-uriy от Апрель 18, 2011, 14:06
>>К слову сказать, для статической линковки закрытых программ нужно покупать линецзию на Qt.
НЕТ, ищи по форуму, обсуждалось


Название: Re: Зачем нужна статическая сборка?
Отправлено: ufna от Апрель 18, 2011, 17:47
>>К слову сказать, для статической линковки закрытых программ нужно покупать линецзию на Qt.
НЕТ, ищи по форуму, обсуждалось

+1

Эта "легенда" уж сколько лет как ошибочна..