Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
3 / 3 / 0
Регистрация: 12.07.2022
Сообщений: 216

Деплой - избыточность

01.12.2022, 00:57. Показов 3266. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задеплоил простую прогу под винду, делал по инструкции, через windeployqt. Проект простецкий, из модулей только core, gui, widgets. Всё работает, но готовая папка с деплоем весит 63 МБ. Посмотрел на содержимое и появились вопросы "какого оно там делает?" Например opengl32sw.dll, которая весит 15 МБ. Прога вообще не обращается к OpenGL. И используемые модули по идее тоже. Ещё папка translations с кучей файлов, хотя я не юзал переводы вообще.

Выкинул из папки всё кроме экзешника и стал по одной добавлять dll которые просит. Оказалось что необходимо из них всего 7 штук, прога запускается и весь функционал работает. Полный размер папки с деплоем уменьшился до 30 МБ.

Ес-сно вопросы - почему столько лишнего, и точно ли это можно удалять? То есть полная работоспособность всего проекта - это достаточное условие что больше ничего не нужно и на любой машине не понадобится?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.12.2022, 00:57
Ответы с готовыми решениями:

Деплой многопроектного приложения
Доброго времени суток. Подскажите, как организовать деплой дистра из нескольких проектов. Всего их 3: 1. Library - библиотека, ни от...

Избыточность кода
Здравствуйте! Помогите найти избыточность кода, Имеется задача " Закодировать сообщение из ФИО используя кодовую страницу WINDOW-1251 /...

Синонимическая избыточность if; else if; else;
Уверен, что repeat until; for; while вполне могут быть заменены одним while. Стремлюсь к простоте, однообразию, однозначности. В...

25
3 / 3 / 0
Регистрация: 12.07.2022
Сообщений: 216
03.12.2022, 22:41  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от insite2012 Посмотреть сообщение
Используйте CQtDeployer
Если бы знать почему он не пашет у меня (см. выше).
0
9991 / 2963 / 497
Регистрация: 05.10.2013
Сообщений: 8,144
Записей в блоге: 243
12.12.2022, 13:44
Лучший ответ Сообщение было отмечено Geek Geekson как решение

Решение

Цитата Сообщение от Geek Geekson Посмотреть сообщение
А ты пробовал так статически что-нибудь совсем тривиальное собрать, как оно уменьшало?
На примере пустого окна и кубика на OpenGL ES 2



Приложение весом 30 MB в динамике будет собрано в статику весом 18 MB. Эти 18 MB статики можно сжать утилитой UPX до 7-8 MB командой из CMD:

upx.exe --best --force app.exe -o new_app.exe
Я встречал на форуме мнение, что нельзя использовать утилиту UPX потому что антивирусы ругаются на такой EXE, но у меня были Avira, Avast, а сейчас ESET, которые ни разу не ругались.

Надо помнить про лицензии. Например, LGPL не позволяет собирать в статику. Для LGPL должна быть динамика. Зато LGPL не требует раскрытия исходников приложения. А GPL позволяет собирать в статику, но надо раскрывать исходники, например, должен быть public репозиторий на GitHub. Коммерческая лицензия, конечно, позволяет собирать в статику без доступа пользователей к исходникам проекта. Надо ещё помнить, что есть несколько модулей, которые нельзя собрать в статику (не знаю какие, вроде QWebView), но есть модули, которые нельзя использовать по LGPL, например, QCharts, у которой GPL и коммерческая. Может быть эти модули вы никогда не будете использовать.

Когда вы много раз собрали в статику, набили шишки (на что может уйти очень много времени и нервов), то последующие сборки делаются очень легко и быстро. Они будут требовать от вас буквально несколько секунд, потому что вы наверняка сохраните свою команду "configure", то есть для сборки вам будет необходимо скопировать команду "configure" в консоль. Во время сборки вы занимаетесь своими делами 5-10 минут, потом вводите команду "mingw32-make" (если вы используете MinGW, а не MSCV), занимаетесь своими делами от 1 до 10 часов (в зависимости от мощности компьютера или ноутбука и от количество выбранных модулей в "configure"), а потом вводите команду "mingw32-make install"

Самый простой и быстрый способ получить статический Qt - скачать тот, который уже собран. Можно поставить MSYS2 (www.msys2.org). В командной строке MSYS2 ввести команду:

pacman -S mingw-w64-x86_64-qt-static
В этом сообщении Отучение Qt 5.2.0 от библиотек MinGW и Qt немного подробнее. Qt5 займёт более 6 ГБайт, а сколько Qt6 - не проверял. Если честно, я не пробовал устанавливать что-либо с помощью MSYS2. Этот способ затратный по весу, но может быть быстрый по времени и менее затратный по нервам. Если собирать самому, с теми основными модулями, которые нужны (мне нужны были: OpenGL, SQLite и QWebSockets), то будет примерно около 800 МБайт для Qt6, но это более часов 7 часов для Qt5 и более 10 часов для Qt6 на среднем ноутбуке с i3. Я собирал 6.2.0, а сейчас уже 6.4 и может что-то по весу и времени поменялось. Несколько модулей Qt нельзя собрать в статику, но они могут вам никогда не понадобиться. Я собирал Qt5 так: Статическая сборка Qt 5.15.2 (MinGW 8.1.0) для Windows 10. Сжатие exe до мин. размера с помощью upx, а Qt6 собирал примерно также, а возможно точно также, не помню, забыл записать. Там же можно скачать собранные в статику Qt 5.15.2 MinGW 32-bit и Qt 6.2.0 MinGW 64-bit.
1
Эксперт .NET
 Аватар для Rius
13824 / 7896 / 1707
Регистрация: 25.05.2015
Сообщений: 23,964
Записей в блоге: 14
12.12.2022, 13:51
С антивирусами проблема не в том, что у вас может заругаться. А в том, что у юзеров с их многообразием антивирусов и их версий, может произойти false positive. И юзер напишет на форуме или ещё где, что вы распространяете вирусню.

Упомянутые различия LGPL и GPL - очевидные и простые. Есть ещё пограничный случай LGPL - распространение статической сборки и в виде обьектных файлов.
1
9991 / 2963 / 497
Регистрация: 05.10.2013
Сообщений: 8,144
Записей в блоге: 243
12.12.2022, 14:06
Но я сейчас не использую статику для Qt, только динамику. Сделал несколько папок с библиотеками, например: набор с OpenGL, набор без OpenGL, набор с WebSockets и т.д. Пробовал на других машинах запускать без Qt и MinGW. Для MinGW нужно, чтобы эти три библиотеки были рядом с EXE:
  • libgcc_s_seh-1.dll
  • libstdc++-6.dll
  • libwinpthread-1.dll

Мне главное, чтобы можно было свои демки прикреплять на КиберФорум, где размер архива должен быть не больше 25 МБайт. В противном случае пришлось бы либо делить на несколько архивов, либо нарушать правила форума и размещать архив на DropBox, Yandex Disk и т.д., при этом тратить место, хранить их долго и бояться не удалить бы их случайно, чтобы ссылки на приложение не перестали работать во множестве сообщений форума. Любой может найти EXE без проблем среди, например, семи dll. Как пример - эта игровая демка на Box2D и шейдерном OpenGL2, где архив весит 7.6 MB, а в разархивированном виде приложение весит 18 МБайт.

Название: 207029770-45250796-b18d-4c22-b7fa-bea53c4fe260.png
Просмотров: 70

Размер: 8.7 Кб



Миниатюры
Вложения
Тип файла: zip Jumps_Box2DOpenGL2_Qt6Cpp.zip (7.59 Мб, 0 просмотров)
0
3 / 3 / 0
Регистрация: 12.07.2022
Сообщений: 216
12.12.2022, 16:42  [ТС]
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Я встречал на форуме мнение, что нельзя использовать утилиту UPX потому что антивирусы ругаются на такой EXE, но у меня были Avira, Avast, а сейчас ESET, которые ни разу не ругались.
Да, бывает, но очень редко. Залил на VirusTotal одну свою старую игрушку - только 3 детекта из 72, от каких-то малоизвестных антивирусов. Там конечно далеко не новый UPX, как с новым не пробовал.
1
9991 / 2963 / 497
Регистрация: 05.10.2013
Сообщений: 8,144
Записей в блоге: 243
12.12.2022, 17:27
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Приложение весом 30 MB в динамике будет собрано в статику весом 18 MB.
Ошибся я. У меня нет таких наборов dll на 30 МБайт. Можно из примеров выше заключить, что архиватор сжимает динамическую сборку также, как UPX сжимает статику, но есть до 8 MB, а эти 8 MB архиватор уже не может дальше сжать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.12.2022, 17:27

Избыточность в склеивании импликант
Здравствуйте, у меня существует некоторого рода затруднение с первым шагом решения по методу Квайна. Да, по условию именно этот метод, но...

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

Избыточность в поле auto_increment
Всем привет. Всем наверняка встречалась ситуация, когда в таблице поле id (первичный) со значением auto_increment имело при долгом...

Избыточность стека протоколов
Добрый вечер! Помогите определить пожалуйста избыточность протоколов на рисунке.

Избыточность двоичного источника
Помогите решить задачу: Определить избыточность двоичного источника, выдающего символы 1 и 0 независимо с вероятностями Р(1)=0,25 и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru