Название: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: 8Observer8 от Январь 22, 2014, 16:09 Примечание. После того, как соберёте по инструкции ниже посмотрите, как использовать сборку на практике: Создание оконного приложения на С++ (Qt). Запуск приложения на компьютере пользователя в релизе (http://"http://www.youtube.com/watch?v=zoLzkaLA7Co&feature=youtu.be")
Перед тем как научиться собирать приложения в один exe необходимо собрать саму библиотеку Qt статически из исходников. На вашем копьютере будет две версии динамическая (которую вы установили) и статическая. Вы сможете переключаться межну этими сборками из Qt Creator Инструментарий: - Версия Qt: Qt 5.4.0 for Windows 32-bit (MinGW 4.9.1, 852 MB) - ОС Win7 Примечание. Предполагается, что у вас есть папка с исходниками Qt. Для того, чтобы она появилась нужно было на этапе установки поставить голочку "Source Components". Либо найти и скачать исходники Qt отдельно - переходим в каталог "C:\Qt\Qt5.4.0\5.4\mingw491_32\mkspecs\win32-g++" и создаём резервную копию файла "qmake.conf" - в файле "qmake.conf" и проводим следующие изменения: Цитировать QMAKE_LFLAGS += -static-libgcc -static -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc DEFINES += QT_STATIC_BUILD Примечание. Эти значения я взял из скрипта "windows-build-qt-static.ps1" из этой инструкции: http://qt-project.org/wiki/How-to-build-a-static-Qt-for-Windows-MinGW (http://qt-project.org/wiki/How-to-build-a-static-Qt-for-Windows-MinGW) - создаём резервную копию исходников Qt, то есть каталога: C:\Qt\Qt5.4.0\5.4\Src\ - отрываем терминал "Start" -> "All Programs" -> "Qt 5.4.0" -> "5.4" -> "MinGW 4.9 (32 bit)" -> "Qt 5.4.0 for Desktop (MinGW 4.9 32 bit)" - переходим в директорию с исходниками. Для этого вводим команду и нажимаем "Enter": Цитировать cd C:\Qt\Qt5.4.0\5.4\Src\ - конфигурируем этапы установки, для этого вводим команду и нажимаем "Enter": Цитировать configure -static -platform win32-g++ -prefix "C:\Qt\Qt5.4.0_Static" -release -opensource -confirm-license -nomake examples -nomake tests -nomake tools -opengl desktop -no-angle -qt-sql-sqlite -make libs -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype - ожидаем окончания конфигурирования, примерно, 10 мин. (время зависит от мощности компьютера) - производим компиляцию исходников Qt, для этого вводим команду и нажимаем "Enter": Цитировать mingw32-make - ожидаем окончания компиляции исходников (на моей машине это заняло 1 час 20 минут) Примечание. В конце построения вылезут следующие ошибки, но вы не обращайте на них внимания: Код: g++ -c -pipe -fno-keep-inline-dllexport -msse2 -mstackrealign -mfpmath=sse -O2 - - копируем файлы в каталог установки (каталог установки мы указали на этапе конфигурирования C:\Qt\Qt5.4.0_Static), для этого вводим команду и нажимаем "Enter": Цитировать mingw32-make install - ожидаем окончания копирования. Статическая сборка теперь будет храниться в папке C:\Qt\Qt5.4.0_Static Примечание. В конце установки вылезут следующие ошибки, но вы не обращайте на них внимания: Код: g++ -Wl,--gc-sections -Wl,-s -Wl,-subsystem,console -o ../../bin/qml.exe .obj/re - удаляем файл C:\Qt\Qt5.4.0\5.4\mingw491_32\mkspecs\win32-g++\qmake.conf и восстанавливаем резервный "qmake.conf" - удаляем каталог C:\Qt\Qt5.4.0\5.4\Src и восстанавливаем резервный Регистрируем сборку в Qt Creator статическую сборку. Для этого: - запускаем QtCreator - в меню нажимаем "Tools" -> нажимаем "Options" - слева выбираем "Build & Run", а справа выбираем вкладку "Qt Vertions" - нажимаем кнопку "Add..." и указываем путь до qmake.exe "C:\Qt\Qt5.4.0_Static\bin\qmake.exe" - нажимаем кнопку "Apply" - переходим на вкладку "Kits" и нажимаем кнопку "Add" - в поле "Name" вводим имя Desktop Qt 5.4.0 Static MinGW 32 bit - если поле "Debugger" пусто, то нажимаем кнопку "Manage..." - нажимаем кнопку "Add", вводим название (например gdb) и указываем путь к отладчику "C:\Qt\Qt5.4.0\Tools\mingw49_32\bit\gdb.exe" - нажимаем кнопку "Apply" - возвращаемся на на вкладку "Kits" - в выпадающем списке "Qt versions" выбираем "Desktop Qt 5.4.0 Static MinGW 32 bit" - нажимаем кнопку "OK" Теперь мы можем создать новый проект и указать две сборки при создании: динамическую (для отладчки) и статическую (для использования) Для сборки статической версии приложения нужно: - перед сборкой выбрать Release - отрыть файл проекта (*.pro) и добавить строку: Код
Нажмите кнопку "Build" (или Ctrl+B) и вы видите, что полученный exe весит, как минимум 15 МБайт. Мы его можем сжать до 5.5 Мбайт с помощью программы upx: Цитировать upx.exe -9 -o ПолноеИмяНовогоФайлаEXE ПолноеИмяСтарогоФайлаExe К примеру, мы собрали статически файл Boxes.exe (15 МБайт). Переименуем его в Boxes1.exe и выполним команду: Цитировать D:\_soft\upx391w\upx391w\upx.exe -9 -o C:\Users\Ivan\GoogleDrive\Qt\Bullet\build-Boxes-Desktop_Qt_5_4_MinGW_32bit_Static-Release\release\Boxes.exe C:\Users\Ivan\GoogleDrive\Qt\Bullet\build-Boxes-Desktop_Qt_5_4_MinGW_32bit_Static-Release\release\Boxes1.exe После этой команды будет создан Boxes.exe весом 5.5 МБайт Instruction for Linux Mint (and Ubuntu) Links: http://help.ubuntu.ru/wiki/qt_static http://qt-project.org/wiki/Building_Qt_5_from_Git http://qt-project.org/forums/viewthread/30708/ sudo apt-get install build-essential sudo apt-get install mesa-common-dev sudo apt-get install build-essential ^libxcb.* libx11-xcb-dev libglu1-mesa-dev libxrender-dev libfontconfig1-d cd qt-everywhere-opensource-src-5.4.0 Note. Replace "/home/ivan/Qt5.4.0_Static" ./configure -static -platform linux-g++ -prefix "/home/ivan/Qt5.4.0_Static" -release -opensource -confirm-license -fontconfig -nomake examples -nomake tests -nomake tools -opengl desktop -qt-sql-sqlite -make libs -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype make make install Название: Re: Инструкция для сборки приложений на Qt в один exe без зависимостей Отправлено: Serr500 от Январь 22, 2014, 16:29 Да уж... Скачай откомпилированную версию Qt и перекомпилируй... Да ещё и папку с исходниками компилятор изгадит. Думаю, инструкция должна быть несколько иной: скачать архив исходников и скомпилировать. И почему собираем только QtBase?
P.S. Никто не пробовал в 5.2 WebKit собирать статически? В четвёрке не собиралось. Интересно, изменилась ли ситуация. Название: Re: Инструкция для сборки приложений на Qt в один exe без зависимостей Отправлено: alex312 от Январь 22, 2014, 16:56 P.S. Никто не пробовал в 5.2 WebKit собирать статически. В четвёрке не собиралось. Интересно, изменилась ли ситуация. Как-то собирал, не помню какую версию. Но прикол в том что статическая либа WebKit-а весила 100 мегабайт. Пример FunnyBrowser весил около 40 Мб, запускался минут 5. :oНазвание: Re: Инструкция для сборки приложений на Qt в один exe без зависимостей Отправлено: 8Observer8 от Январь 22, 2014, 17:22 > Да уж... Скачай откомпилированную версию Qt и перекомпилируй...
Я скачал откомпилированную версию вместе с исходниками, чтобы была возможность и в обычном режиме собирать приложения, то есть переключаться между статической и динамической версиями сборок. > Да ещё и папку с исходниками компилятор изгадит. Да, возможно загаживаются папки с исходниками, но меня это пока не беспокоит. По-моему есть какая-то команда, чтобы почистить папки с исходниками от ненужных файлов. Если кто помнит эту команду, то напишите. > И почему собираем только QtBase? Не знаю, что входит в QtBase. Если чего-то не будет хватать, то изменю инструкцию. Добавлю как дополнительные модули подключать к сборке. Название: Re: Инструкция для сборки приложений на Qt в один exe без зависимостей Отправлено: Serr500 от Январь 22, 2014, 17:35 Да, возможно загаживаются папки с исходниками, но меня это пока не беспокоит. По-моему есть какая-то команда, чтобы почистить папки с исходниками от ненужных файлов. Если кто помнит эту команду, то напишите. А почему Вы считаете, что других это тоже не беспокоит? Папки чистятся от мусора почти полностью командой make clean, но и после этого остаются скомпилированные либы, которые имеют весьма немаленький объём.Не знаю, что входит в QtBase. Шедеврально! ;D Больше мне сказать нечего. Надеюсь, что на серьёзных ресурсах подобные инструкции появляться не будут. Засим откланиваюсь.Название: Re: Инструкция для сборки приложений на Qt в один exe без зависимостей Отправлено: Igors от Январь 22, 2014, 17:47 Инструкция для сборки приложений на Qt в один exe без зависимостей от libstdc++-6.dll, libgcc_s_dw2-1.dll, Qt5Core.dll, Qt5Gui.dll и т.д. Дело хорошее, может сэкономить людям время, НО платформу и компилятор надо обязательно указывать, тоже жирным и желательно первымНазвание: Re: Инструкция для сборки приложений на Qt в один exe без зависимостей Отправлено: 8Observer8 от Январь 22, 2014, 18:08 Igors, спасибо за одобрение! Добавил. Я сам, когда собирать пытался, то много помучился и искал вот такую инструкцию. Да, возможно в ней не всё учтено, но я и написал здесь, чтобы мне указали на недостатки. Если у меня в процессе сборок или запуска на другой машине появятся проблемы (не будет хватать других модулей), то я дополню инструкцию. Как уже указали, тут есть проблемка, что QtBase может если нужны будут дополнительные модули.
Название: Re: Инструкция для сборки приложений на Qt в один exe без зависимостей Отправлено: Serr500 от Январь 22, 2014, 18:25 - выбираем тип лицензии "Open Source Edition" и подтверждаем лицензию Код: configure -static -prefix "C:\Qt\Qt5.2.0_static" -opengl desktop -nomake examples -nomake tests Дарю: Код: -opensource -confirm-license Название: Re: Инструкция для сборки приложений на Qt в один exe без зависимостей Отправлено: 8Observer8 от Январь 22, 2014, 18:31 Serr500, спасибо! Пока так оставлю. Когда ещё что-то появится существенное, то проверю работу и тогда изменю :)
Название: Re: Инструкция для сборки приложений на Qt в один exe без зависимостей Отправлено: Akon от Январь 23, 2014, 01:02 Если для configure указан ключ static, зачем его еще и во флаг компоновщика помещать?
Название: Re: Инструкция для сборки приложений на Qt в один exe без зависимостей Отправлено: Serr500 от Январь 23, 2014, 07:35 Потому что при -static в configure статическими будут только сами библиотеки Qt, а libstdc++, libgcc и libwinpthread будут связываться динамически. Чтобы убрать зависимость от этих библиотек и меняют флаги компоновщика.
Название: Re: Инструкция для сборки приложений на Qt в один exe без зависимостей Отправлено: xintrea от Январь 23, 2014, 10:40 Тебую такую же инструкцию под Linux. А то никакие statifier-ы не работают.
Название: Re: Инструкция для сборки приложений на Qt в один exe без зависимостей Отправлено: 8Observer8 от Январь 23, 2014, 10:52 xintrea, это в списке моих приоритетов. Жизненно необходимо для моей будущей работы :) Надеюсь получить её. Там нужно будет работать и на Windows и на Linux. Через месяц собеседование. Дали список вопросов и самый первый такой:
Цитировать 1. Деплоймент приложений, написанных с использованием Qt5.2 на Windows, Linux и других платформах. Название: Re: Инструкция для сборки приложений на Qt в один exe без зависимостей Отправлено: Akon от Январь 23, 2014, 22:18 Цитировать Потому что при -static в configure статическими будут только сами библиотеки Qt, а libstdc++, libgcc и libwinpthread будут связываться динамически. Чтобы убрать зависимость от этих библиотек и меняют флаги компоновщика. Согласен, спасибо.Название: Re: Инструкция для сборки приложений на Qt в один exe без зависимостей Отправлено: qate от Январь 25, 2014, 07:25 Недостаток статической сборки - большие обновления
В случаи .dll/.so - придется обновить (выслать заказчику/клиенту) только exe файл (+ скрипт обновления), что на порядки меньше всего дистрибутива Если не gpl/lgpl то нельзя линковать статически (поправьте если не так) Название: Re: Инструкция для сборки приложений на Qt в один exe без зависимостей Отправлено: 8Observer8 от Январь 31, 2014, 07:17 Остальные модули так же собираются? К примеру: network, widgets, sql, xml и т.д. Хотя вот opengl я там учёл в сборке, поэтому собирается нормально и запускается на другой машине.
Вот так пойдёт? Цитировать configure -static -prefix "C:\Qt\Qt5.2.0_static" -network -sql -widgets -xml -opengl desktop -nomake examples -nomake tests Название: Re: Инструкция для сборки приложений на Qt в один exe без зависимостей Отправлено: 8Observer8 от Апрель 18, 2014, 11:10 Я хочу собрать Qt статически со всеми модулями. Ввожу такую команду:
Цитировать configure -static -prefix "C:\Qt\Qt5.2.1_static" -gui -multimedia -multimediawidgets -network -qml -sql -testlib -webkit -widgets -bluetooth -positioning -scripttools -serialport -svg -winextras -x11extras -xml -xmlpatterns -opengl desktop -nomake examples -nomake tests А мне выдаётся сообщение: Цитировать Unknown option -multimedia. Подскажите, пожалуйста, что не так? Как правильно написать? Название: Re: Инструкция для сборки приложений на Qt в один exe без зависимостей Отправлено: pilot.net от Май 01, 2014, 07:00 Я хочу собрать Qt статически со всеми модулями. Ввожу такую команду: Цитировать configure -static -prefix "C:\Qt\Qt5.2.1_static" -gui -multimedia -multimediawidgets -network -qml -sql -testlib -webkit -widgets -bluetooth -positioning -scripttools -serialport -svg -winextras -x11extras -xml -xmlpatterns -opengl desktop -nomake examples -nomake tests А мне выдаётся сообщение: Цитировать Unknown option -multimedia. Подскажите, пожалуйста, что не так? Как правильно написать? Кто инструкцию то пишет ? Вот и разберись сам . А то все готовое хотите Название: Re: Инструкция для сборки приложений на Qt в один exe без зависимостей Отправлено: Serr500 от Май 01, 2014, 12:59 Код: configure -platform %PLATFORM_NAME% -help Название: Re: Инструкция для сборки приложений на Qt в один exe без зависимостей Отправлено: Paramon от Июнь 20, 2014, 20:48 А нигде нельзя скачать уже готовое? :P
Я начал собирать 4.8.6 компилятором 2010 студии. За 3 часа собралось только 5 библиотек. Компьютер не тугодум. Название: Re: Инструкция для сборки приложений на Qt в один exe без зависимостей Отправлено: kambala от Июнь 20, 2014, 22:46 надо было исключить из сборки ненужные бибилотеки
Название: Re: Инструкция для сборки приложений на Qt в один exe без зависимостей Отправлено: navrocky от Июнь 20, 2014, 23:27 Хочу добавить, что есть в wiki мануал по статической сборке с mingw - http://qt-project.org/wiki/How-to-build-a-static-Qt-for-Windows-MinGW
Там есть ссылка на PowerShell-скрипт который сделает всю работу автоматически. У меня он отработал без сбоев. Единственный минус, нет возможности собрать с поддержкой ANGLE из-за ошибок в configure, которая в упор не видит dx sdk когда компилятор не MSVC. Название: Re: Инструкция для сборки приложений на Qt в один exe без зависимостей Отправлено: Overload от Август 29, 2014, 23:32 может у кого-нибудь получилось в netbeans настроить?
Название: Re: Инструкция для сборки приложений на Qt в один exe без зависимостей Отправлено: navrocky от Август 30, 2014, 15:15 может у кого-нибудь получилось в netbeans настроить? Что настроить? Название: Re: Инструкция для сборки приложений на Qt в один exe без зависимостей Отправлено: Overload от Август 31, 2014, 12:16 что бы без зависимостей, пробовал делать по этой интсрукции что здесь, все получилось, не могу только сам netbeans настроить, где куда там что прописывать, менял путь к qmake от новой сбокри , но этого видимо недостаточно, выдает ошибки
Название: Re: Инструкция для сборки приложений на Qt в один exe без зависимостей Отправлено: Overload от Август 31, 2014, 12:50 вот что он мне выдает
Код: "/C/msys/1.0/bin/make.exe" -f nbproject/Makefile-Debug.mk QMAKE=/C/Qt/Qt5.2.1_static/bin/qmake.exe SUBPROJECTS= .build-conf Название: Re: Инструкция для сборки приложений на Qt в один exe без зависимостей Отправлено: vizir.vs от Сентябрь 01, 2014, 10:47 На сколько я знаю LGPL в случае статической сборки нужно выкладывать объектные файлы приложения. Чтобы пользователь мог сам слинковать приложение с новой версией либы Qt (при коммерческом использовании). Так что не вижу особого смысла делать статическую линковку Qt, кроме как для личного/некоммерческого использования.
Название: Re: Инструкция для сборки приложений на Qt в один exe без зависимостей Отправлено: 8Observer8 от Сентябрь 29, 2014, 19:01 Цитировать На сколько я знаю LGPL в случае статической сборки нужно выкладывать объектные файлы приложения. По-моему, только исходники.Хочу добавить, что есть в wiki мануал по статической сборке с mingw - http://qt-project.org/wiki/How-to-build-a-static-Qt-for-Windows-MinGW Я не смог поставить PowerShell на Win7:Там есть ссылка на PowerShell-скрипт который сделает всю работу автоматически. У меня он отработал без сбоев. Единственный минус, нет возможности собрать с поддержкой ANGLE из-за ошибок в configure, которая в упор не видит dx sdk когда компилятор не MSVC. (http://i7.pixs.ru/storage/3/2/0/376png_2861176_14042320.png) Мне частично удалось собрать статически. Где можно посмотреть какие модули и как подключать при конфигурировании? Например, я хотел собрать статически приложение с последовательным портом, но выдаётся ошибка: Код
Такая команда не даёт всей картины: Код
Код: + cd qtbase Название: Re: Инструкция для сборки приложений на Qt в один exe без зависимостей Отправлено: 8Observer8 от Сентябрь 29, 2014, 21:16 Как хотя бы этот serialport присобачить?
Название: Re: Инструкция для сборки приложений на Qt в один exe без зависимостей Отправлено: 8Observer8 от Сентябрь 29, 2014, 21:21 Как хотя бы этот serialport присобачить? Извините, поспешил! Гуглом надо было сначала воспользоваться :) Название: Re: Инструкция для сборки приложений на Qt в один exe без зависимостей Отправлено: Alex Custov от Сентябрь 30, 2014, 11:38 Я не смог поставить PowerShell на Win7: PowerShell уже есть в виндах начиная с Windows 7. Название: Re: Инструкция для сборки приложений на Qt в один exe без зависимостей Отправлено: 8Observer8 от Сентябрь 30, 2014, 14:18 Я не смог поставить PowerShell на Win7: PowerShell уже есть в виндах начиная с Windows 7.Сейчас такая ситуация. Я собрал статически Qt. Собрал статически приложение MainWindow. Перехожу в папку release. Запускаю приложение. Требуются dll: - libgcc_s_dw2-1.dll - libstdc++-6.dll - libwinpthread-1.dll Когда их добавляю в папку - запускается нормально. Я перед конфигурированием заходил в папку "C:\Qt\Qt5.3.2\5.3\mingw482_32\mkspecs\win32-g++". Открывал файл "qmake.conf" и после знака "=" написал: Цитировать QMAKE_LFLAGS = -static-libgcc -static -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc Я не знаю, что за ключи идут после -static, но так чаще всего на форумах пишут. Потом запустил консоль Qt. Перешёл в папку: cd C:\Qt\Qt5.3.2\5.3\Src\ Ввёл команду: Код: configure -static -platform win32-g++ -prefix "C:\Qt\Qt5.3.2_Static" -release -opensource -confirm-license -c++11 -nomake examples -nomake tests -opengl desktop -no-angle -no-vcproj -qt-sql-sqlite Через минут 5 ввёл команду: mingw32-make Через, примерно, 1.5 часа - эту команду: mingw32-make install Потом зарегистрировал в Qt. Почему же эти три библиотеки не подцепились? Меня смущает эта строка: Код: QMAKE_LFLAGS_DLL = -shared Может её надо было тоже изменить на -static? Код: # Название: Re: Инструкция для сборки приложений на Qt в один exe без зависимостей Отправлено: 8Observer8 от Сентябрь 30, 2014, 16:23 Цитировать Сейчас такая ситуация. Я собрал статически Qt. Собрал статически приложение MainWindow. Перехожу в папку release. Запускаю приложение. Требуются dll: У меня есть такое предположение, что надо было написать вот так: +=- libgcc_s_dw2-1.dll - libstdc++-6.dll - libwinpthread-1.dll Когда их добавляю в папку - запускается нормально. Я перед конфигурированием заходил в папку "C:\Qt\Qt5.3.2\5.3\mingw482_32\mkspecs\win32-g++". Открывал файл "qmake.conf" и после знака "=" написал: Цитировать QMAKE_LFLAGS = -static-libgcc -static -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc Название: Re: Инструкция для сборки приложений на Qt в один exe без зависимостей Отправлено: 8Observer8 от Октябрь 01, 2014, 10:54 Всё по-прежнему, то есть требует: libgcc_s_dw2-1.dll, libstdc++-6.dll, libwinpthread-1.dll
Удовлетворён и этим результатам, так как с помощью программы Upx сжал exe с диалогом с 13 MB к 5 MB. Плюс ещё эти dll надо у exe положить: - libgcc_s_dw2-1.dll - 117 KB - libstdc++-6.dll - 970 KB - libwinpthread-1.dll - 640 P.S. Переписал инструкцию. Убрал всё лишнее. Название: Re: Инструкция, как собрать приложение в один exe-файл и сжать его до мин. размера Отправлено: 8Observer8 от Ноябрь 14, 2014, 12:40 Изменил название и написал, как сжать полученный exe (простое окно с кнопкой) c 14 МБайт до 5 МБайт с помощью программы upx
Название: Re: Инструкция, как собрать приложение в один exe-файл и сжать его до мин. размера Отправлено: SigMA от Ноябрь 17, 2014, 13:45 Скажите пожалуйста, требуются или нет для статической сборки Qt 5.3.2 perl, ruby и python. А то в каких-то инструкциях пишут, что нужны, а в других об этом ничего не говорится.
Название: Re: Инструкция, как собрать приложение в один exe-файл и сжать его до мин. размера Отправлено: 8Observer8 от Ноябрь 17, 2014, 16:58 Без этого можно обойтись. Рекомендую поставить "Virtual Box", в нём Windows (у меня XP на виртуалке), а туда уже Qt с исходниками. Потом выполняйте инструкцию на виртуальной машине. Когда вам потребуется отправить другу свой exe-файл, то вы запустите "Virtual Box" -> "Windows XP" -> "Qt Creator" -> откроете проект (предварительно нужно расшарить диск через меню "Virtual Box") -> компилируете ваш проект со статической сборкой -> сжимаете ваш exe (c ~15 МБайт) с помощью upx (в ~5МБайт) -> помещаете в архив zip -> сам архив на Yandex.Disk -> правой кнопкой мыши по архиву -> выбираете "скопировать ссылку" -> отправляете другу
Название: Re: Инструкция, как собрать приложение в один exe-файл и сжать его до мин. размера Отправлено: 8Observer8 от Ноябрь 17, 2014, 17:07 Другу можно вот такое сообщение отправить:
Зацени новую версию змейки: https://yadi.sk/d/8jDtj7EucidNE Хочу в 3D сделать, как здесь: https://yadi.sk/d/TX4qJ1TzcidhP P.S. Исходники: https://github.com/8Observer8/SnakeIn10Minutes Делал, как здесь: http://www.youtube.com/watch?v=GiZGEFBGgKU Название: Re: Инструкция, как собрать приложение в один exe-файл и сжать его до мин. размера Отправлено: SigMA от Ноябрь 19, 2014, 09:26 Странно. Сейчас нашёл инструкцию по сборке Qt for Windows - Building from Source | QtDoc 5.3 на qt-project.org (http://qt-project.org/doc/qt-5/windows-building.html). Там идёт ссылка на Qt for Windows - Requirements (
http://qt-project.org/doc/qt-5/windows-requirements.html) Так вот там тоже говорится, требуются эти инструменты: Building from Source These tools are not needed to run Qt 5 applications, but they are required for building Qt 5 from source. ActivePerl - Install a recent version of ActivePerl (download page) and add the installation location to your PATH. Python - Install Python from the here and add the installation location to your PATH in order to be able to build Qt WebKit. Install Ruby from here and add the installation location to your PATH in order to be able to build Qt WebKit. Причём, если Python и Ruby нужны только для WebKit, то Perl судя по всему, требуется для всего остального. Название: Re: Инструкция, как собрать приложение в один exe-файл и сжать его до мин. размера Отправлено: Alex Custov от Ноябрь 19, 2014, 10:53 Скажите пожалуйста, требуются или нет для статической сборки Qt 5.3.2 perl, ruby и python. А то в каких-то инструкциях пишут, что нужны, а в других об этом ничего не говорится. Требуются. После сборки Qt их можно удалить. Название: Re: Инструкция, как собрать приложение в один exe-файл и сжать его до мин. размера Отправлено: 8Observer8 от Ноябрь 21, 2014, 09:55 Причём, если Python и Ruby нужны только для WebKit, то Perl судя по всему, требуется для всего остального. Ну вот смотрите. Я на виртуалку поставил Zver XP. Поставил Qt. Выполнил свою инструкцию. Qt собирает приложения статически. С WebKit ещё не пробовал собирать, он мне пока не нужен. Не знаю причём тут Python, Ruby и PerlНазвание: Re: Инструкция, как собрать приложение в один exe-файл и сжать его до мин. размера Отправлено: SigMA от Ноябрь 21, 2014, 11:29 Цитировать Ну вот смотрите. Я на виртуалку поставил Zver XP. Поставил Qt. Выполнил свою инструкцию. Qt собирает приложения статически. С WebKit ещё не пробовал собирать, он мне пока не нужен. Не знаю причём тут Python, Ruby и Perl Вот и я пока не понимаю. WebKit тоже пока не интересует. Т.е. Python и Ruby не нужны. А вот на Perl в каком-то конфигурационном файле натыкался. Там проверка есть - установлен или нет. Надо будет попробовать с этими утилитами собрать и посмотреть в чём будет различие. Название: Re: Инструкция, как собрать приложение в один exe-файл и сжать его до мин. размера Отправлено: 8Observer8 от Ноябрь 22, 2014, 11:45 Да давно бы уже поставили Vitual Box, Zver XP на виртуалку, Qt, попробовали бы инструкцию, а потом может написали бы "ругнулся, что Perl нужен". А так это вилами по воде. У меня же собралось на чистой винде (врядли Zver ставит Perl)
Название: Re: Инструкция, как собрать приложение в один exe-файл и сжать его до мин. размера Отправлено: Johnik от Ноябрь 22, 2014, 12:22 Да давно бы уже поставили Vitual Box, Zver XP на виртуалку, Qt, попробовали бы инструкцию, а потом может написали бы "ругнулся, что Perl нужен". А так это вилами по воде. У меня же собралось на чистой винде (врядли Zver ставит Perl) qt 4 perl не требует qt 5 в qt5\qtbase\configure.bat в первых же строках видно: Код: for %%C in (cl.exe icl.exe g++.exe perl.exe) do set %%C=%%~$PATH:C Название: Re: Инструкция, как собрать приложение в один exe-файл и сжать его до мин. размера Отправлено: 8Observer8 от Ноябрь 22, 2014, 12:55 Почему тогда у меня на голой винде собрался Qt5 без Perl?
Название: Re: Инструкция, как собрать приложение в один Отправлено: Johnik от Ноябрь 22, 2014, 13:19 выполните test.bat:
Код: @echo off Название: Re: Инструкция, как собрать приложение в один Отправлено: 8Observer8 от Ноябрь 22, 2014, 14:50 выполните test.bat: Код: @echo off (http://i9.pixs.ru/storage/9/5/4/001png_4708144_14835954.png) Название: Re: Инструкция, как собрать приложение в один exe-файл и сжать его до мин. размера Отправлено: kambala от Ноябрь 22, 2014, 15:57 рекомендовать зверя к установке — идиотизм
Название: Re: Инструкция, как собрать приложение в один exe-файл и сжать его до мин. размера Отправлено: 8Observer8 от Ноябрь 22, 2014, 16:05 рекомендовать зверя к установке — идиотизм Для виртуальки сойдёт. Быстро ставится и не нужно заморачиваться с драйверами. У меня на Win7 почему-то Qt не собирается статически. Что у самого работает, и как сам делал, то и советуюНазвание: Re: Инструкция, как собрать приложение в один exe-файл и сжать его до мин. размера Отправлено: xokc от Ноябрь 22, 2014, 17:31 Почему тогда у меня на голой винде собрался Qt5 без Perl? Потому что perl там нужен для выгрузки исходников из репозитория. Если исходники загружены самостоятельно, то perl не нужен.Название: Re: Инструкция, как собрать приложение в один exe-файл и сжать его до мин. размера Отправлено: SigMA от Ноябрь 24, 2014, 15:52 У меня на Win7 почему-то Qt не собирается статически. Что у самого работает, и как сам делал, то и советую У меня на Win7 собралось Название: Re: Инструкция, как собрать приложение в один exe-файл и сжать его до мин. размера Отправлено: SigMA от Ноябрь 24, 2014, 16:29 Потому что perl там нужен для выгрузки исходников из репозитория. Если исходники загружены самостоятельно, то perl не нужен. Похоже, что @xokc прав. В \qtbase\configure.bat: Код: if not exist %QTSRC%\.gitignore goto sconf Если файла .gitignore нет, а его действительно нет (исходники или получены при установке Qt или загружены и распакованы отдельно), то код с использованием perl пропускается: Код: if "%perl.exe%" == "" ( Правда я так и не понял, что конкретно выполняет скрипт syncqt.pl. Не нашёл там ничего похожего на скачивание из репозитория. Название: Re: Инструкция, как собрать приложение в один exe-файл и сжать его до мин. размера Отправлено: SigMA от Ноябрь 26, 2014, 13:43 Резюме по поводу необходимости инструментов perl, ruby и python.
1. Perl по всей видимости нужен, если нет заранее подготовленных исходников. Что в этом случае происходит - не пробовал. Возможно, как было указано выше, происходит доставка исходников из репозитория и их подготовка. В этом случае без Perl сборка в принципе не возможна. 2. Все три инструмента нужны для сборки WebKit. Если они не доступны выдаётся следующее предупреждение во время сборки: Код: cd qtwebkit\ && ( if not exist Makefile D:\Qt\5.3.2\5.3static\src\qtbase\bin\qmake D:\Qt\5.3.2\5.3static\src\qtwebkit\WebKit.pro -o Makefile ) && mingw32-make -f Makefile Название: Re: Инструкция, как собрать приложение в один exe-файл и сжать его до мин. размера Отправлено: SigMA от Ноябрь 26, 2014, 14:03 Рекомендации по сборке в дополнение к исходной инструкции.
Команды лучше запускать не непосредственно в консольном окне, а через командные пакетные файлы с перенаправлением вывода сообщений и ошибок в лог файл. В этом случае гораздо проще анализировать результаты выполнения команд. Можно все команды объединить в один пакетный файл, а можно каждую выполнять в отдельном пакетном файле. Я делал вторым способом, чтобы можно было анализировать результат каждого процесса по мере завершения. Пример командного файла: Код: cmd /c "configure.bat -static -release -platform win32-g++ -prefix %QtDir% -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -qt-sql-sqlite -no-openssl -opensource -confirm-license -make libs -nomake tools -nomake examples -nomake tests" > %QtDir%\conf.log 2>&1 Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: 8Observer8 от Декабрь 18, 2014, 16:25 Переправил инструкцию под Qt 5.4
Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: __Heaven__ от Декабрь 18, 2014, 16:39 У вас сейчас получаются полностью независимые программы по этой инструкции?
Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: 8Observer8 от Декабрь 18, 2014, 17:20 У вас сейчас получаются полностью независимые программы по этой инструкции? Да, только рядом с exe должны быть эти библиотеки:- libgcc_s_dw2-1.dll - 118 KB - libstdc++-6.dll - 1,003 KB - libwinpthread-1.dll - 48 КБ Не совсеми модулями прокатывает. К примеру, если программа использует COM-порт, то уже не собирётся. При переключении на статический Release Qt Creator выдаст следующее: Цитировать Project ERROR: Unknown module(s) in QT: serialport И ещё отмечу, что после статической сборки простейшего приложения с диалоговым окном, оно будет весить ~15 МБайт. Зато после сжатия его с помощью upx - будет весить ~5.5 MБайт По GPL с приложением нужно поставлять и его исходники. Например: MyApp: - bin -- Linux -- Windows - src Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: 8Observer8 от Декабрь 18, 2014, 17:23 Если кто встречал хорошую инструкцию для статической сборки под Linux Mint или Ubuntu, то дайте, пожалуйста, ссылку
Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: Пантер от Декабрь 18, 2014, 17:31 Не понимаю смысла в статической сборке. Тем более, под Линухом.
Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: Alex Custov от Декабрь 18, 2014, 17:37 Не понимаю смысла в статической сборке. Тем более, под Линухом. и в сжатии тоже. Возможно в каких-то исключительных случаях - да, но в общем - нет. Сжатое приложение стартует заметно медленнее, особенно если оно большое. Не думаю, что 10 Мб важнее скорости запуска. Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: __Heaven__ от Декабрь 18, 2014, 17:39 А если следовать инструкции (http://qt-project.org/wiki/How-to-build-a-static-Qt-for-Windows-MinGW) из wiki, мы не получим желаемого эффекта?
Не понимаю смысла в статической сборке. Тем более, под Линухом. Всякие delphi, которые создают единственный exe, извращают сознание. Когда с него перешёл на c++ и Qt - меня просто возмутило то, что у меня ещё какие-то левые файлы нужно таскать с прогой ;D ;DНазвание: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: 8Observer8 от Декабрь 18, 2014, 17:45 Для меня есть смысл, так как у меня медленный интернет и мне легче отдать приложение, которое в архиве занимает 5 MБайт, чем 17 MБайт в архиве. Простое оконное приложение на Qt - это куча библиотек и более 40 МБайт
Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: Пантер от Декабрь 18, 2014, 17:47 Либы можно сделать отдельным пакетом и дать только один раз, зато потом прогу будешь килобайтную отдавать.
Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: Alex Custov от Декабрь 18, 2014, 17:54 Для меня есть смысл, так как у меня медленный интернет и мне легче отдать приложение, которое в архиве занимает 5 MБайт, чем 17 MБайт в архиве. Простое оконное приложение на Qt - это куча библиотек и более 40 МБайт а 7z с -mx9 разве не решит эту проблему? Ужимает в три раза. То же самое что и UPX, но без проблем со скоростью запуска. Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: __Heaven__ от Декабрь 18, 2014, 17:59 Либы можно сделать отдельным пакетом и дать только один раз, зато потом прогу будешь килобайтную отдавать. А под линуксом вообще можно просто команду на установку qt передать заказчикуНазвание: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: __Heaven__ от Декабрь 18, 2014, 18:01 А если следовать инструкции (http://qt-project.org/wiki/How-to-build-a-static-Qt-for-Windows-MinGW) из wiki, мы не получим желаемого эффекта? Так вы пробовали?Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: 8Observer8 от Декабрь 18, 2014, 18:25 А если следовать инструкции (http://qt-project.org/wiki/How-to-build-a-static-Qt-for-Windows-MinGW) из wiki, мы не получим желаемого эффекта? Так вы пробовали?По поводу времени запуска, то я не замечаю, что долго. А так можно и ту и другую сборку применять, для разных ситуаций Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: __Heaven__ от Декабрь 19, 2014, 09:37 Попробовал собрать статически - жестоко долго думает...
Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: __Heaven__ от Декабрь 19, 2014, 09:40 - удаляем Qt 5.4 через панел задач - удаляем папку C:\Qt\Qt5.4.0 - ставим заново Qt Вам не кажется, что это как-то по хардкору :) Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: gil9red от Декабрь 19, 2014, 09:48 - удаляем Qt 5.4 через панел задач - удаляем папку C:\Qt\Qt5.4.0 - ставим заново Qt Вам не кажется, что это как-то по хардкору :) В этих пунктах могло добавиться форматирование и переустановка винды :) Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. р Отправлено: Пантер от Декабрь 19, 2014, 09:49 В этих пунктах могло добавиться форматирование и переустановка винды :) Да чо мелочиться? Сразу комп меняйте. Или жизнь....Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: Igors от Декабрь 19, 2014, 10:00 Всякие delphi, которые создают единственный exe, извращают сознание. Когда с него перешёл на c++ и Qt - меня просто возмутило то, что у меня ещё какие-то левые файлы нужно таскать с прогой ;D ;D А у нормальных людей на OSX есть концепция bundle :) Да еще и universal binary. И хорошим тоном считается отсутствие всяких инсталляций (если это не системная утилита).Но если на Вындоуз этого нет - чего упираться? Практичнее согласиться с тем что "а здесь делают так". А то уже 5 листов исписали, а "бомба продолжает прыгать" Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: __Heaven__ от Декабрь 19, 2014, 10:01 а что у нас происходит такого с процессом при запуске статически, что он так долго думает? У меня прога задействует сразу все свои причендалы кроме стандартных диалогов, но при динамической линковке открывается мгновенно.
Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: Alex Custov от Декабрь 19, 2014, 10:04 а что у нас происходит такого с процессом при запуске статически, что он так долго думает? У меня прога задействует сразу все свои причендалы кроме стандартных диалогов, но при динамической линковке открывается мгновенно. на это ответят только разрабы Qt. Я своё время отказался от статики по этой же причине. Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: __Heaven__ от Декабрь 19, 2014, 10:06 А у нормальных людей на OSX есть концепция bundle :) Да еще и universal binary. И хорошим тоном считается отсутствие всяких инсталляций (если это не системная утилита). А что это? И как это без инсталляции? Все проги portable? С osx не имел дел.Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: navrocky от Декабрь 19, 2014, 10:17 А у нормальных людей на OSX есть концепция bundle :) Да еще и universal binary. И хорошим тоном считается отсутствие всяких инсталляций (если это не системная утилита). А что это? И как это без инсталляции? Все проги portable? С osx не имел дел.Выглядит это так: скачиваешь 1 файлик, щелкаешь по нему, это оказывается образ диска, он монтируется и открывается окошко с файлами этого диска, там ты видишь приложение (которое на самом деле папка с файлами, bundle), тянешь его к себе на рабочий стол (это запуск инсталлятора). После этого может появиться мастер установки приложения (как в винде) а может и молча поставиться. С точки зрения пользователя вроде проще, а с технической, по мне, как-то всё это странно. Под bundle подразумевается папка с бинарём, всеми его зависимостями и метаинформацией. Igors поправь пож. если я не прав. Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: 8Observer8 от Декабрь 19, 2014, 10:23 - удаляем Qt 5.4 через панел задач - удаляем папку C:\Qt\Qt5.4.0 - ставим заново Qt Вам не кажется, что это как-то по хардкору :) Цитировать а что у нас происходит такого с процессом при запуске статически, что он так долго думает? Если вы сжимали upx'ом, то, по-моему, перед запуском программа разжимается в оперативку. У меня предположение, что upx зашивает в exe некий алгоритм "разжимания". С небольшими приложениями запускается быстро. Возможно для больших приложений придётся использовать динамикуПо поводу веса приложения. Примерный отрывок из цитаты противника Qt, когда я скинул кому-то небольшое приложение на 5 МБайт: "вот нужен будет калькулятор весом 5 МБайт, тогда и советуй свой Qt" Про почти 50 МБайт в динамике я промолчал Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: Alex Custov от Декабрь 19, 2014, 10:30 Примерный отрывок из цитаты противника Qt, когда я скинул кому-то небольшое приложение на 5 МБайт: "вот нужен будет калькулятор весом 5 МБайт, тогда и советуй свой Qt" Про почти 50 МБайт в динамике я промолчал Так он профессионально разработкой калькуляторов занимается? ;D На чём именно он пишет? Просто интересно. Подозреваю очередного адепта Делфи, пишущего для Windows-only. Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: Пантер от Декабрь 19, 2014, 10:35 Вы, блин, сравните еще с прогой на Шарпе. Мизер весит. Вот только никто не учитывает, что надо сначала 200-300 метров .Net поставить.
В общем, если пиплы так возмущаются размером софта, делай динамическую линковку, но Кьютовые либы пихай отдельным дистром. ИМХО, вполне нормально. Те же рантаймы студии идут отдельно. Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: __Heaven__ от Декабрь 19, 2014, 10:44 - удаляем Qt 5.4 через панел задач - удаляем папку C:\Qt\Qt5.4.0 - ставим заново Qt Вам не кажется, что это как-то по хардкору :) Вот только никто не учитывает, что надо сначала 200-300 метров .Net поставить. Ну да, можно либы Qt оформить в виде отдельного инсталлятора - ни чем не хуже получится :)Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: Пантер от Декабрь 19, 2014, 10:48 А делфи меньше из-за того, что кот не кроссплатформенный. Плюс, паскаль.
Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: __Heaven__ от Декабрь 19, 2014, 10:49 Плюс, паскаль. Не понялНазвание: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: Пантер от Декабрь 19, 2014, 10:50 На сколько я помню, паскалевские проги меньше места занимают. Могу и ошибаться.
Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: __Heaven__ от Декабрь 19, 2014, 10:59 С точки зрения пользователя вроде проще, а с технической, по мне, как-то всё это странно. Проще чем что?Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: Igors от Декабрь 19, 2014, 11:03 а что у нас происходит такого с процессом при запуске статически, что он так долго думает? У меня прога задействует сразу все свои причендалы кроме стандартных диалогов, но при динамической линковке открывается мгновенно. Потому что динамические либы кешируются в памяти, а статик каждый раз все с нуля. Igors поправь пож. если я не прав. Да все так, инсталлер формальный, чисто для солидности, он предлагает скопировать - что можно было с тем же успехом сделать и без него. Я к тому что на каждой ОС так или иначе сложился порядок как что делать, пытаться по-другому - не преступление, но и выгод не видно.Те же рантаймы студии идут отдельно. Вот-вот. И чего добиваемся статикой если все равно что-то надо ставить? А перекомпилить все используемые либы multi-threaded (НЕ DLL) - себе дорожеПочему хочется статик - хорошо понятно. "Вот я "соберу" - и везде работает, никаких гвоздей!". Но при этом "радость (пере) сборки" получаем всякий раз когда хоть одна либа изменилась. После неск таких упражнений любовь к статике проходит Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: __Heaven__ от Декабрь 19, 2014, 11:18 Если вы сжимали upx'ом, то ... Не, я его не использовал. Но он бы ещё дал бы мне подождать.Лучше, действительно, воспользоваться 7z для передачи. А экономить на размере исполнителя для систем под управлением Windows, ИМХО, в наше время не особо востребовано. Ну будет он 5мб вместо 20 - придется стереть пару mp3, если вообще голяк :), зато не так долго ждать запуска. Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: Пантер от Декабрь 19, 2014, 11:22 А если один порнофильм удалить, то таких прог вообще можно зоопарк держать. (Как говаривал один мой знакомый, если у вас пол винта не забита порнухой, значит, вы не умеете им пользоваться).
В наше время экономить на дисковом пространстве моветон. Винты в терабайт вполне себе доступны по цене. А софт можно не отправлять, а выкладывать в облаке и давать сцыль. Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: __Heaven__ от Декабрь 19, 2014, 11:23 динамические либы кешируются в памяти А при перезапуске системы кешируются?Я имею в виду pagefile Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: Пантер от Декабрь 19, 2014, 11:26 динамические либы кешируются в памяти А при перезапуске системы кешируются?Я имею в виду pagefile Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: __Heaven__ от Декабрь 19, 2014, 11:27 С чего бы? Файл подкачки может вообще очищаться при запуске системы. Либы кешируются при первой их загрузке. Интересуюсь... Ну мало ли... В винде по умолчанию не вычищается.Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: Igors от Декабрь 19, 2014, 12:02 А при перезапуске системы кешируются? Нет, часто заметно что "первый запуск" значительно дольшеЯ имею в виду pagefile Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. р Отправлено: Пантер от Декабрь 19, 2014, 12:05 Можно самому замутить кеширование - поргу, которая юзает либы добавить в автозапуск. В итоге, после загрузки винды либы будут уже подгружены.
Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: 8Observer8 от Декабрь 19, 2014, 12:21 Так он профессионально разработкой калькуляторов занимается? ;D На чём именно он пишет? Просто интересно. Подозреваю очередного адепта Делфи, пишущего для Windows-only. Про калькулятор написала одна особа, которая занимается изучением OpenGL и шейдеров. Страшно ненавидит Qt и бесится, если кто-то упоминает о нём. Пишет на WinAPI (на линуксе, вроде, она тоже на чём-то пишет). Вот случайно её пример сохранился:Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: 8Observer8 от Декабрь 19, 2014, 12:22 - удаляем Qt 5.4 через панел задач - удаляем папку C:\Qt\Qt5.4.0 - ставим заново Qt Вам не кажется, что это как-то по хардкору :) Вы, блин, сравните еще с прогой на Шарпе. Мизер весит. Вот только никто не учитывает, что надо сначала 200-300 метров .Net поставить. Меня заставили сравнить с Visual Basic (я по ошибке туда попал). Пролистайте до моего сообщения: http://www.cyberforum.ru/visual-basic/thread1294084.htmlАргумент в пользу статики: на киберфоруме ограничение на прикрепляемый файл 10 MБайт. Такой может быть мой ответ в какой-нибудь теме: вот мой вариант этой игрушки. Оцените. Либо: мой вариант приложения (были нередко случаи, когда человеку нужно небольшое приложение и он пишет в личку за доработкой). Человек быстренько скачал. Без всяких вопросов запустил и попробовал. Если дать ссылку на архив 20 МБайт (Yandex.Disk или Google.Drive), а при разархивировании он будет 50 МБайт, то это вызывает шок: "как это так? такое маленькое приложение, а столько весит?!" На мой взгляд лучше дублировать, то есть один архив загружать на сам форум, а другой хранить на Yandex.Disk или Google.Drive и давать ссылку. Польза в том, что моё приложение не пропадёт, если я изменю ссылку на дисках яндекс и гугл Но на этих дисках размер ограничен. Это можно обойти. Для того, чтобы не дублировать файлы я могу хранить общие dll в отдельном архиве. И это, кстати, будет намного экономнее, чем статическая сборка, получается :-\ Пользователю нужно будет кинуть две ссылки на общие dll и на архив с exe (вместе с дополнительными dll). Правда, приходится объяснять, что для запуска нужно exe кинуть к dll (или наоборот). Частенько это вызывает проблемы. Это довольно нестандартное решение для маленького оконного приложения. И когда человек наконец-то понял, что dll должны лежать именно рядом с exe (а не в папочке dlls, как он скачал). Должна быть маленькая инструкция (для примеров и небольших приложений - установку я исключаю). И вот он видит, что это маленькое оконное приложение состоит из кучи библиотек и занимает почти 50 МБайт - обычно это вызывает небольшой шок. Поэтому для маленьких приложений я делаю статическую сборку Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: __Heaven__ от Декабрь 19, 2014, 12:38 Убрать "грязь" после сборки А где эта грязь происходит конкретно? В каких папках?Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: Пантер от Декабрь 19, 2014, 12:39 Так он профессионально разработкой калькуляторов занимается? ;D На чём именно он пишет? Просто интересно. Подозреваю очередного адепта Делфи, пишущего для Windows-only. Про калькулятор написала одна особа, которая занимается изучением OpenGL и шейдеров. Страшно ненавидит Qt и бесится, если кто-то упоминает о нём. Пишет на WinAPI (на линуксе, вроде, она тоже на чём-то пишет). Вот случайно её пример сохранился:Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. р Отправлено: Пантер от Декабрь 19, 2014, 12:42 8Observer8, да сделай ты просто инсталлятор в том же Inno Setup для Кьютовых либ, который будет их куда-нибудь инсталлить и в PATH прописывать. Тогда вообще ничего пользователю делать не надо будет.
Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: 8Observer8 от Декабрь 19, 2014, 12:50 Цитировать да сделай ты просто инсталлятор в том же Inno Setup для Кьютовых либ, который будет их куда-нибудь инсталлить и в PATH прописывать. Тогда вообще ничего пользователю делать не надо будет Не знаю как организавать это. С одной стороны, если пользователь поставил, то для обновления я могу ему exe кидать. Но с другой, как я буду хранить эти приложения на дисках для раздачи?Убрать "грязь" после сборки А где эта грязь происходит конкретно? В каких папках?Я там про ошибки ещё писал, которые проигнорировал. И текст их привёл. Кто-нибудь может пояснить, что это такое и как от них избавиться? Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: Igors от Декабрь 19, 2014, 12:56 Про калькулятор написала одна особа, которая занимается изучением OpenGL и шейдеров. Страшно ненавидит Qt и бесится, если кто-то упоминает о нём. Пишет на WinAPI (на линуксе, вроде, она тоже на чём-то пишет). Вот случайно её пример сохранился: Очень даже симпатично, а для девчонки вообще прекрасно. Не гадит эксепшнами, не сует std куда ни попадя, в общем - делом занимается, а не халтурит как некоторые :) Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: 8Observer8 от Декабрь 19, 2014, 13:10 Про калькулятор написала одна особа, которая занимается изучением OpenGL и шейдеров. Страшно ненавидит Qt и бесится, если кто-то упоминает о нём. Пишет на WinAPI (на линуксе, вроде, она тоже на чём-то пишет). Вот случайно её пример сохранился: Ненавижу такие простыни. Буэээ.P.S. Мне хочется, чтобы мы не тратили время на доказательства, что Qt не дерьмо. Лучше делом доказывать в виде продуктов своего труда Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. р Отправлено: __Heaven__ от Декабрь 19, 2014, 13:52 Я понял, к чему вы клоните. Грязь, скорее всего, в папке с исходниками. Будем считать, что переустановка Qt - это восстановление исходников и config-файла. У меня ещё приложение одно перестало запускаться, как оказалось это не потому что было что-то испорчено. Да, согласен, что переустанавливать Qt - это слишком, но мне так проще было. Надо подумать, как лучше Ну да. Я сделал резерв qmake.conf и папки src.К слову, src копируется долго из-за мелких файлов, поэтому как только винда построила карту копирования и приступила к непосредственному копированию я запустил configure, чтобы время не терять. После установки можно затереть свои изменения и вернуть всё как было. А ещё проще после установки сделать mingw32-make clean... Я там про ошибки ещё писал, которые проигнорировал. И текст их привёл. Кто-нибудь может пояснить, что это такое и как от них избавиться? Вы так написали, как будто это нормально, что он сыпет ошибкиНазвание: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. р&# Отправлено: 8Observer8 от Декабрь 19, 2014, 14:36 Ну да. Я сделал резерв qmake.conf и папки src. Спасибо! ИсправилВначале инструкции добавил: - переходим в каталог "C:\Qt\Qt5.4.0\5.4\mingw491_32\mkspecs\win32-g++" и создаём резервную копию файла "qmake.conf". Например, с именем "qmake.conf Copy" - создаём резервную копию исходников Qt, то есть каталога: C:\Qt\Qt5.4.0\5.4\Src\ Заменил эти строчки инструкции - удаляем Qt 5.4 через панел задач - удаляем папку C:\Qt\Qt5.4.0 - ставим заново Qt На эти: - удаляем файл C:\Qt\Qt5.4.0\5.4\mingw491_32\mkspecs\win32-g++\qmake.conf и восстанавливаем резервный "qmake.conf" - удаляем каталог C:\Qt\Qt5.4.0\5.4\Src и восстанавливаем резервный Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. р&# Отправлено: 8Observer8 от Декабрь 19, 2014, 14:40 Я там про ошибки ещё писал, которые проигнорировал. И текст их привёл. Кто-нибудь может пояснить, что это такое и как от них избавиться? Вы так написали, как будто это нормально, что он сыпет ошибкиНазвание: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. р&# Отправлено: 8Observer8 от Декабрь 19, 2014, 15:25 8Observer8, да сделай ты просто инсталлятор в том же Inno Setup для Кьютовых либ, который будет их куда-нибудь инсталлить и в PATH прописывать. Тогда вообще ничего пользователю делать не надо будет. То есть у меня отдельно будет инсталятор для общих либ, а новый пользователь может один раз поставить эти либы и потом скачивать мои приложения в виде лёгкого exe (ну и возможно парочки либ). Я правильно понял идею?Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. р Отправлено: Пантер от Декабрь 19, 2014, 15:26 8Observer8, да сделай ты просто инсталлятор в том же Inno Setup для Кьютовых либ, который будет их куда-нибудь инсталлить и в PATH прописывать. Тогда вообще ничего пользователю делать не надо будет. То есть у меня отдельно будет инсталятор для общих либ, а новый пользователь может один раз поставить эти либы и потом скачивать мои приложения в виде лёгкого exe (ну и возможно парочки либ). Я правильно понял идею?Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: dukebarman от Январь 08, 2015, 15:08 Цитировать Примечание. У меня почему-то сохранилась зависимость от трёх следующих библиотек. В папки с приложениями мне приходится добавлять: - libgcc_s_dw2-1.dll - 118 KB - libstdc++-6.dll - 1,003 KB - libwinpthread-1.dll - 48 КБ Проблема решается добавлением флагов в файл проекта (*.pro): Код: QMAKE_LFLAGS += -static -static-libgcc Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: 8Observer8 от Январь 08, 2015, 17:30 Цитировать Примечание. У меня почему-то сохранилась зависимость от трёх следующих библиотек. В папки с приложениями мне приходится добавлять: - libgcc_s_dw2-1.dll - 118 KB - libstdc++-6.dll - 1,003 KB - libwinpthread-1.dll - 48 КБ Проблема решается добавлением флагов в файл проекта (*.pro): Код: QMAKE_LFLAGS += -static -static-libgcc Спасибо! Исправил. Где ж вы раньше были :) Обнаружил такую проблему, что приложения собранные Qt 32 bit на Wip7 64bit не запускаются на Win XP 32 bit. Они просто не запускаются, без всяких сообщений. Это относится и к shared-приложениям. Придётся для пользователей собирать на виртуалке с XP. А то вдруг у кого-то есть компьютер с XP, как у меня Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: kambala от Январь 08, 2015, 18:50 зависимости проверь в shared
Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: 8Observer8 от Январь 08, 2015, 20:03 зависимости проверь в shared А как это? Я не понял. Если бы какой-то dll не хватало, то вылезло бы сообщениеНазвание: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: kambala от Январь 08, 2015, 21:01 всякое бывает. лучше лишний раз убедиться, что нужные длл на месте.
Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: 8Observer8 от Январь 11, 2015, 07:00 Пытаюсь собрать Qt статически на Linux Mint 13 по этой инструкции: http://help.ubuntu.ru/wiki/qt_static
Вот мои шаги. Поставил Mint. Ввёл команду: Цитировать sudo apt-get install build-essential ^libxcb.* libx11-xcb-dev libglu1-mesa-dev libxrender-dev libfontconfig1-dev Ввожу команду конфигурирования: Цитировать ./configure -prefix "/home/ivan/Qt5.4.0_Static" -static -platform linux-g++ -release -opensource -confirm-license -fontconfig -no-compile-examples -nomake examples -nomake tests -nomake tools -opengl desktop -qt-sql-sqlite -make libs -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype Результат конфигурирования: Цитировать Configure summary Build type: linux-g++ (i386, CPU features: none detected) Build options: Configuration .......... accessibility accessibility-atspi-bridge audio-backend avx c++11 clock-gettime clock-monotonic concurrent evdev eventfd fontconfig full-config getaddrinfo getifaddrs gif harfbuzz iconv inotify ipv6ifname jpeg large-config largefile linuxfb medium-config minimal-config mremap nis opengl pcre png posix_fallocate precompile_header qpa qpa reduce_exports reduce_relocations release rpath small-config sse2 sse3 sse4_1 sse4_2 ssse3 static system-freetype xcb xcb-glx xcb-plugin xcb-render xcb-xlib xkbcommon-qt xlib xrender zlib Build parts ............ libs Mode ................... release Using C++11 ............ yes Using gold linker....... no Using PCH .............. yes Target compiler supports: SSE2/SSE3/SSSE3 ...... yes/yes/yes SSE4.1/SSE4.2 ........ yes/yes AVX/AVX2 ............. yes/no Qt modules and options: Qt D-Bus ............... runtime Qt Concurrent .......... yes Qt GUI ................. yes Qt Widgets ............. yes Large File ............. yes QML debugging .......... yes Use system proxies ..... no Support enabled for: Accessibility .......... yes ALSA ................... no CUPS ................... no Evdev .................. yes FontConfig ............. yes FreeType ............... yes (system library) Glib ................... no GTK theme .............. no HarfBuzz ............... yes (bundled copy) Iconv .................. yes ICU .................... no Image formats: GIF .................. yes (in QtGui, using bundled copy) JPEG ................. yes (in QtGui, using bundled copy) PNG .................. yes (in QtGui, using bundled copy) journald ............... no mtdev .................. no Networking: getaddrinfo .......... yes getifaddrs ........... yes IPv6 ifname .......... yes OpenSSL .............. no NIS .................... yes OpenGL / OpenVG: EGL .................. no OpenGL ............... desktop OpenVG ............... no PCRE ................... yes (bundled copy) pkg-config ............. yes PulseAudio ............. no QPA backends: DirectFB ............. no EGLFS ................ no KMS .................. no LinuxFB .............. yes XCB .................. yes (system library) EGL on X ........... no GLX ................ yes MIT-SHM ............ yes Xcb-Xlib ........... yes Xcursor ............ yes (loaded at runtime) Xfixes ............. yes (loaded at runtime) Xi ................. yes (loaded at runtime) Xi2 ................ no Xinerama ........... yes (loaded at runtime) Xrandr ............. yes (loaded at runtime) Xrender ............ yes XKB ................ no XShape ............. yes XSync .............. yes XVideo ............. yes Session management ..... yes SQL drivers: DB2 .................. no InterBase ............ no MySQL ................ no OCI .................. no ODBC ................. no PostgreSQL ........... no SQLite 2 ............. no SQLite ............... qt-qt TDS .................. no udev ................... no xkbcommon .............. yes (bundled copy, XKB config root: /usr/share/X11/xkb) zlib ................... yes (bundled copy) WARNING: Using static linking will disable the use of dynamically loaded plugins. Make sure to import all needed static plugins, or compile needed modules into the library. Info: creating super cache file /home/ivan/Qt5.4.0/5.4/Src/.qmake.super Qt is now configured for building. Just run 'make'. Once everything is built, you must run 'make install'. Qt will be installed into /home/ivan/Qt5.4.0_Static Prior to reconfiguration, make sure you remove any leftovers from the previous build. Ввожу команду make и через 20 минут получаю ошибку: "Project ERROR: Unknown module(s) in QT: dbus" Цитировать rm -f ../../lib/libQt5Gui.a mv -f libQt5Gui.a ../../lib/ make[3]: Leaving directory `/home/ivan/Qt5.4.0/5.4/Src/qtbase/src/gui' cd platformheaders/ && ( test -e Makefile || /home/ivan/Qt5.4.0/5.4/Src/qtbase/bin/qmake /home/ivan/Qt5.4.0/5.4/Src/qtbase/src/platformheaders/platformheaders.pro -o Makefile ) && make -f Makefile make[3]: Entering directory `/home/ivan/Qt5.4.0/5.4/Src/qtbase/src/platformheaders' make[3]: Nothing to be done for `first'. make[3]: Leaving directory `/home/ivan/Qt5.4.0/5.4/Src/qtbase/src/platformheaders' cd platformsupport/ && ( test -e Makefile || /home/ivan/Qt5.4.0/5.4/Src/qtbase/bin/qmake /home/ivan/Qt5.4.0/5.4/Src/qtbase/src/platformsupport/platformsupport.pro -o Makefile ) && make -f Makefile Project ERROR: Unknown module(s) in QT: dbus make[2]: *** [sub-platformsupport-make_first] Error 3 make[2]: Leaving directory `/home/ivan/Qt5.4.0/5.4/Src/qtbase/src' make[1]: *** [sub-src-make_first] Error 2 make[1]: Leaving directory `/home/ivan/Qt5.4.0/5.4/Src/qtbase' make: *** [module-qtbase-make_first] Error 2 Помогите, пожалуйста, исправить ошибку Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: GRomR1 от Январь 20, 2015, 11:12 Ввожу команду конфигурирования: Попробуй Цитировать ./configure -prefix "/home/ivan/Qt5.4.0_Static" -static -platform linux-g++ -release -opensource -confirm-license -fontconfig -no-compile-examples -nomake examples -nomake tests -nomake tools -opengl desktop -qt-sql-sqlite -make libs -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype Помогите, пожалуйста, исправить ошибку Код: ./configure -no-dbus ...... Подробности: -no-dbus ........... Do not compile in D-Bus support. + -dbus .............. Compile in D-Bus support and load libdbus-1 dynamically. -dbus-linked ....... Compile in D-Bus support and link to libdbus-1. Еще советую вместо команды Код: mingw32-make Код: mingw32-make -j4 А теперь о моих проблемах. Что за фигня? Уже третий день пытаюсь Qt статически собрать. Пробовал через их ps-скрипт - ошибка как тут: http://qt-project.org/forums/viewthread/51597 (http://qt-project.org/forums/viewthread/51597) Пробовал по данной инструкции - все собралось и установилось (ошибки есть, но здесь сказано, что они не критичны), и опять же ничего не работает. Creator усердно говорит, что "qmlscene не установлен", и отказывается хоть какой-нибудь проект до конца скомпилировать. ОС Windows 7 x64 на x86 аналогично вот последние строки mingw32-make install g++ -c -pipe -fno-keep-inline-dllexport -O2 -std=c++0x -fno-exceptions -frtti -W all -Wextra -DUNICODE -DQT_QML_DEBUG_NO_WARNING -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I. - I"..\..\include" -I"..\..\include\QtQml" -I"C:\Qt\Qt5.4.0\5.4\Src\qtbase\include " -I"C:\Qt\Qt5.4.0\5.4\Src\qtbase\include\QtNetwork" -I"C:\Qt\Qt5.4.0\5.4\Src\qt base\include\QtCore\5.4.0" -I"C:\Qt\Qt5.4.0\5.4\Src\qtbase\include\QtCore\5.4.0\ QtCore" -I"C:\Qt\Qt5.4.0\5.4\Src\qtbase\include\QtWidgets" -I"C:\Qt\Qt5.4.0\5.4\ Src\qtbase\include\QtGui" -I"C:\Qt\Qt5.4.0\5.4\Src\qtbase\include\QtCore" -I".mo c\release" -I"C:\Qt\Qt5.4.0\5.4\Src\qtbase\mkspecs\win32-g++" -o .obj\release\qr c_qml.o .rcc\release\qrc_qml.cpp C:\Qt\Qt5.4.0\5.4\Src\qtbase\bin\moc.exe -DUNICODE -DQT_QML_DEBUG_NO_WARNING -DQ T_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_WIDGETS_LIB -DQ T_GUI_LIB -DQT_CORE_LIB -D__GNUC__ -DWIN32 -IC:/Qt/Qt5.4.0/5.4/Src/qtbase/mkspec s/win32-g++ -IC:/Qt/Qt5.4.0/5.4/Src/qtdeclarative/tools/qml -IC:/Qt/Qt5.4.0/5.4/ Src/qtdeclarative/include -IC:/Qt/Qt5.4.0/5.4/Src/qtdeclarative/include/QtQml -I C:/Qt/Qt5.4.0/5.4/Src/qtbase/include -IC:/Qt/Qt5.4.0/5.4/Src/qtbase/include/QtNe twork -IC:/Qt/Qt5.4.0/5.4/Src/qtbase/include/QtCore/5.4.0 -IC:/Qt/Qt5.4.0/5.4/Sr c/qtbase/include/QtCore/5.4.0/QtCore -IC:/Qt/Qt5.4.0/5.4/Src/qtbase/include/QtWi dgets -IC:/Qt/Qt5.4.0/5.4/Src/qtbase/include/QtGui -IC:/Qt/Qt5.4.0/5.4/Src/qtbas e/include/QtCore conf.h -o .moc\release\moc_conf.cpp g++ -c -pipe -fno-keep-inline-dllexport -O2 -std=c++0x -fno-exceptions -frtti -W all -Wextra -DUNICODE -DQT_QML_DEBUG_NO_WARNING -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I. - I"..\..\include" -I"..\..\include\QtQml" -I"C:\Qt\Qt5.4.0\5.4\Src\qtbase\include " -I"C:\Qt\Qt5.4.0\5.4\Src\qtbase\include\QtNetwork" -I"C:\Qt\Qt5.4.0\5.4\Src\qt base\include\QtCore\5.4.0" -I"C:\Qt\Qt5.4.0\5.4\Src\qtbase\include\QtCore\5.4.0\ QtCore" -I"C:\Qt\Qt5.4.0\5.4\Src\qtbase\include\QtWidgets" -I"C:\Qt\Qt5.4.0\5.4\ Src\qtbase\include\QtGui" -I"C:\Qt\Qt5.4.0\5.4\Src\qtbase\include\QtCore" -I".mo c\release" -I"C:\Qt\Qt5.4.0\5.4\Src\qtbase\mkspecs\win32-g++" -o .obj\release\mo c_conf.o .moc\release\moc_conf.cpp g++ -Wl,--gc-sections -Wl,-s -Wl,-subsystem,console -o ..\..\bin\qml.exe .obj/re lease/main.o .obj/release/qml_qml_plugin_import.o .obj/release/qml_plugin_import .o .obj/release/qrc_qml.o .obj/release/moc_conf.o -LC:/Qt/Qt5.4.0/5.4/Src/qtdec larative/lib -LC:/Qt/Qt5.4.0/5.4/Src/qtbase/lib -lQt5Widgets -LC:/Qt/Qt5.4.0/5.4 /Src/qtdeclarative/plugins/qmltooling -lqmldbg_qtquick2 -lQt5Quick -lqmldbg_tcp -lQt5Qml -LC:/Qt/Qt5.4.0/5.4/Src/qtbase/plugins/bearer -lqgenericbearer -lqnativ ewifibearer -lQt5Network -ldnsapi -LC:/Qt/Qt5.4.0/5.4/Src/qtbase/plugins/platfor ms -lqwindows -lwinspool -lshlwapi -lQt5PlatformSupport -LC:/Qt/Qt5.4.0/5.4/Src/ qtimageformats/plugins/imageformats -lqdds -lqicns -lqjp2 -lqmng -lqtga -lqtiff -lqwbmp -lqwebp -LC:/Qt/Qt5.4.0/5.4/Src/qtbase/plugins/imageformats -lqico -lQt5 Gui -lcomdlg32 -loleaut32 -limm32 -lwinmm -lglu32 -lopengl32 -lgdi32 -lqtharfbuz zng -lQt5Core -lole32 -luuid -lws2_32 -ladvapi32 -lshell32 -luser32 -lkernel32 - lmpr C:/Qt/Qt5.4.0/5.4/Src/qtdeclarative/lib/libQt5Qml.a(YarrInterpreter.o):YarrInter preter.cpp:(.text+0x622): undefined reference to `JSC::Yarr::wordcharCreate()' C:/Qt/Qt5.4.0/5.4/Src/qtdeclarative/lib/libQt5Qml.a(YarrInterpreter.o):YarrInter preter.cpp:(.text+0x693): undefined reference to `JSC::Yarr::newlineCreate()' C:/Qt/Qt5.4.0/Tools/mingw491_32/bin/../lib/gcc/i686-w64-mingw32/4.9.1/../../../. ./i686-w64-mingw32/bin/ld.exe: C:/Qt/Qt5.4.0/5.4/Src/qtdeclarative/lib/libQt5Qml .a(YarrInterpreter.o): bad reloc address 0x12 in section `.text$_ZN3WTF15BumpPoi nterPool6createEj[__ZN3WTF15BumpPointerPool6createEj]' collect2.exe: error: ld returned 1 exit status Makefile.Release:86: recipe for target '..\..\bin\qml.exe' failed mingw32-make[4]: *** [..\..\bin\qml.exe] Error 1 mingw32-make[4]: Leaving directory 'C:/Qt/Qt5.4.0/5.4/Src/qtdeclarative/tools/qm l' Makefile:44: recipe for target 'release-install' failed mingw32-make[3]: *** [release-install] Error 2 mingw32-make[3]: Leaving directory 'C:/Qt/Qt5.4.0/5.4/Src/qtdeclarative/tools/qm l' Makefile:107: recipe for target 'sub-qml-install_subtargets' failed mingw32-make[2]: *** [sub-qml-install_subtargets] Error 2 mingw32-make[2]: Leaving directory 'C:/Qt/Qt5.4.0/5.4/Src/qtdeclarative/tools' Makefile:78: recipe for target 'sub-tools-install_subtargets' failed mingw32-make[1]: *** [sub-tools-install_subtargets] Error 2 mingw32-make[1]: Leaving directory 'C:/Qt/Qt5.4.0/5.4/Src/qtdeclarative' makefile:228: recipe for target 'module-qtdeclarative-install_subtargets' failed mingw32-make: *** [module-qtdeclarative-install_subtargets] Error 2 Проблема решена. Поставил ActivePerl и Python, прописал их в PATH, и сборка собралась. Наверно в них дело, или звезды так легли. Почему об этом правда нигде не написано? З.Ы. как использовать спойлеры на данном сайте? Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. р Отправлено: TeX от Февраль 09, 2015, 17:33 Всем Привет !
Дабы не плодить лишних тем - пишу сюда. Пытаюсь пересобрать Qt для компиляции под ARM. Все установил по инструкции, настроил и прописал. Запускаю конфигурирование так: Код: configure -static -embedded -platform win32-g++ -xplatform linux-arm-gnueabihf-g++ -prefix "C:\Qt\Qt540_static" -release -opensource -confirm-license -nomake examples -nomake tests -nomake tools -opengl desktop -no-angle -qt-sql-sqlite -make libs -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype Цитировать This is the Qt for Windows Open Source Edition. Делаю You have already accepted the terms of the license. Creating qmake... mingw32-make: Nothing to be done for 'first'. Running configuration tests... Environment: INCLUDE= Unset LIB= Unset PATH= C:\Qt\Qt540\5.4\mingw491_32\bin C:\Qt\Qt540\Tools\mingw491_32\bin C:\Perl64\site\bin C:\Perl64\bin C:\Python27\ C:\Python27\Scripts C:\Program Files (x86)\CollabNet C:\Program Files (x86)\Embarcadero\Studio\15.0\bin C:\Users\Public\Documents\Embarcadero\Studio\15.0\Bpl C:\Program Files (x86)\Embarcadero\Studio\15.0\bin64 C:\Users\Public\Documents\Embarcadero\Studio\15.0\Bpl\Win64 C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common C:\Windows\system32 C:\Windows C:\Windows\System32\Wbem C:\Windows\System32\WindowsPowerShell\v1.0\ C:\Program Files (x86)\QuickTime\QTSystem\ C:\linaro\bin C:\linaro\ %APPDATA%\Python\Scripts Configuration: pcre release compile_examples cross_compile Qt Configuration: minimal-config small-config medium-config large-config full-config release c++11 static zlib gif jpeg png freetype harfbuzz accessibility opengl opengles2 egl audio-backend native-gestures qpa eventfd concurrent rpath QMAKESPEC...................linux-arm-gnueabihf-g++ (commandline) Architecture................arm, features: Host Architecture...........i386, features: Maketool....................mingw32-make Debug.......................no Force debug info............no C++11 support...............yes Link Time Code Generation...no Accessibility support.......yes RTTI support................yes SSE2 support................no SSE3 support................no SSSE3 support...............no SSE4.1 support..............no SSE4.2 support..............no AVX support.................no AVX2 support................no NEON support................no OpenGL support..............yes Large File support..........yes NIS support.................no Iconv support...............no Evdev support...............no Mtdev support...............no Inotify support.............no eventfd(7) support..........yes Glib support................no CUPS support................no OpenVG support..............no SSL support.................no OpenSSL support.............no Qt D-Bus support............no Qt Widgets module support...yes Qt GUI module support.......yes QML debugging...............yes DirectWrite support.........no Use system proxies..........no QPA Backends: GDI.....................yes Direct2D................no Third Party Libraries: ZLIB support............qt GIF support.............yes JPEG support............yes PNG support.............yes FreeType support........yes Fontconfig support......no HarfBuzz support........qt PCRE support............qt ICU support.............no ANGLE...................no Dynamic OpenGL..........no Styles: Windows.................yes Windows XP..............no Windows Vista...........no Fusion..................yes Windows CE..............no Windows Mobile..........no Sql Drivers: ODBC....................no MySQL...................no OCI.....................no PostgreSQL..............no TDS.....................no DB2.....................no SQLite..................yes (qt) SQLite2.................no InterBase...............no Sources are in..............C:\Qt\Qt540\5.4\Src\qtbase Build is done in............C:\Qt\Qt540\5.4\Src\qtbase Install prefix..............C:\Qt\Qt540_static Headers installed to........C:\Qt\Qt540_static\include Libraries installed to......C:\Qt\Qt540_static\lib Arch-dep. data to...........C:\Qt\Qt540_static Plugins installed to........C:\Qt\Qt540_static\plugins Library execs installed to..C:\Qt\Qt540_static\bin QML1 imports installed to...C:\Qt\Qt540_static\imports QML2 imports installed to...C:\Qt\Qt540_static\qml Binaries installed to.......C:\Qt\Qt540_static\bin Arch-indep. data to.........C:\Qt\Qt540_static Docs installed to...........C:\Qt\Qt540_static\doc Translations installed to...C:\Qt\Qt540_static\translations Examples installed to.......C:\Qt\Qt540_static\examples Tests installed to..........C:\Qt\Qt540_static\tests WARNING: Using static linking will disable the use of plugins. Make sure you compile ALL needed modules into the library. Qt is now configured for building. Just run mingw32-make. To reconfigure, run mingw32-make confclean and configure. Код: mingw32-make Сделал с дебагом в файл Код: mingw32-make -d >>debug Вот концовка файла: Цитировать Creating temporary batch file C:\Users\admin\AppData\Local\Temp\make4612-1d.bat Подскажите, в чем может быть проблема ? Batch file contents: @echo off test -d qtdoc\ || mkdir -p qtdoccd qtdoc\ && ( test -e Makefile || C:\Qt\Qt540\5.4\Src\qtbase\bin\qmake C:\Qt\Qt540\5.4\Src\qtdoc\qtdoc.pro -o Makefile ) && mingw32-make -f Makefile CreateProcess(C:\Users\admin\AppData\Local\Temp\make4612-1d.bat,C:\Users\admin\AppData\Local\Temp\make4612-1d.bat,...) Putting child 00537BE8 (module-qtdoc-make_first) PID 5457712 on the chain. Live child 00537BE8 (module-qtdoc-make_first) PID 5457712 Reaping winning child 00537BE8 PID 5457712 Cleaning up temp batch file C:\Users\admin\AppData\Local\Temp\make4612-1d.bat Removing child 00537BE8 PID 5457712 from chain. Successfully remade target file 'module-qtdoc-make_first'. Pruning file 'FORCE'. Finished prerequisites of target file 'make_first'. Must remake target 'make_first'. Successfully remade target file 'make_first'. Finished prerequisites of target file 'first'. Must remake target 'first'. Successfully remade target file 'first'. Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: 8Observer8 от Февраль 20, 2015, 17:11 Добавил в инструкцию примечание:
Примечание. После того, как соберёте по инструкции ниже посмотрите, как использовать сборку на практике: Создание оконного приложения на С++ (Qt). Запуск приложения на компьютере пользователя в релизе (http://"http://www.youtube.com/watch?v=zoLzkaLA7Co&feature=youtu.be") Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: Tan4ek от Март 03, 2015, 00:04 Сделал все как в гайде, но на другом компе, приложение не открывается, в диспетчере есть, а окно не появляется. Что может быть причиной?
Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: klio от Март 04, 2015, 09:40 а не подскажете что у вас с serialport получилось? на второй странице есть отсылка что вы в гугле посмотрели, а каков результат не отписались (ну или я зевнул). уже третий день пошёл как пытаюсь разобраться, сжальтесь, очень прошу.
Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: 8Observer8 от Март 17, 2015, 23:45 Сделал все как в гайде, но на другом компе, приложение не открывается, в диспетчере есть, а окно не появляется. Что может быть причиной? Пока что сколько мои exe не запускали - везде запускались, то есть жалаб не было. Есть вариант поставить на виртуалку XP, расшарить папку с вашими проектами из виртуалки, чтобы собирать статические exe. Да, напряжно, но как вариант, может будут запускаться нормально. Либо отказаться от статикиа не подскажете что у вас с serialport получилось? на второй странице есть отсылка что вы в гугле посмотрели, а каков результат не отписались (ну или я зевнул). уже третий день пошёл как пытаюсь разобраться, сжальтесь, очень прошу. По-моему, serialport невозможно собрать статически. Нет такого ключа для конфигурации, как и для модуля multimedia. Тут только один вариант - использовать динамикуНазвание: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: billy4685 от Декабрь 14, 2015, 11:10 Здравствуйте, 8Observer8. Я попробовал собрать по вашей инструкции статически Qt 5.3.2. Теперь простые приложения собираются нормально в один exe. А вот те приложения в которых я использую свои собственные виджеты, увы не собираются. Пишут :-1: ошибка: Unknown module(s) in QT: designer. Походу при конфигурации configure нужно еще что-то дописать (наверное -designer пока не пробовал). И еще есть вопрос, как будут вести себя приложения в которых используется Open GL ES2? Нужно еще чо-то дописовать к configure?
Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: 8Observer8 от Декабрь 14, 2015, 11:26 Я уверен, что когда пишет "Unknown module", значит при конфигурировании не был указан нужный модуль. Я не использовал свои виджеты, поэтому не знаю какой какой ключ нужно писать. Придётся вам найти самому. А может кто подскажет. А потом заново конфигурировать и пересобирать Qt
По поводу второго вопроса, то скорее всего, нормально. Ведь когда пишешь ключ -opengl, то можно не беспокоиться за OpenGL. Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: __Heaven__ от Декабрь 14, 2015, 13:50 billy4685, configure -help выводит опции сборки, GLES там тоже настраивается. В pro файле имеется переменная QT, модули записываются в виде
Код: QT += core gui opengl Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: billy4685 от Декабрь 14, 2015, 17:35 8Observer8, __Heaven__, спасибо за ответы.
Попробовал собрать следующую конфигурацию (подумал может нужно вместо -nomake tools указать -make tools) : configure -static -platform win32-g++ -prefix "C:\Qt\Qt5.3.2_Static_2" -release -opensource -confirm-license -nomake examples -nomake tests -make tools -opengl desktop -no-angle -qt-sql-sqlite -make libs -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype все собралось, так же как и ранее. Но результат тот же((. Если в *.pro файл дописую Qt += designer, то сразу же выбивается ошибка: Project ERROR: Unknown module(s) in QT: designer. Здесь смотрел ключи для конфигурации: http://doc.crossplatform.ru/qt/4.8.x/html-qt/configure-options.html , но какой именно ключ нужно вписать, пока не пойму. (( Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: __Heaven__ от Декабрь 14, 2015, 17:59 А такой модуль в qt точно существует? За что он отвечает?
В readme написано, что отдельные модули можно собрать при помощи Код: make -j4 module-qtscript module-qtwebkit Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: billy4685 от Декабрь 14, 2015, 23:08 А такой модуль в qt точно существует? За что он отвечает? Да в Qt существует модуль QtDesigner, он позволяет создавать собственные классы с возможностью их добавления и использования в QtDesigner-е (http://doc.crossplatform.ru/qt/4.3.5/qtdesigner.html). В readme написано, что отдельные модули можно собрать при помощи Код: make -j4 module-qtscript module-qtwebkit Я использовал его при написании своего виджета для своих приложений. Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: Igors от Декабрь 15, 2015, 07:57 Да в Qt существует модуль QtDesigner, он позволяет создавать собственные классы с возможностью их добавления и использования в QtDesigner-е (http://doc.crossplatform.ru/qt/4.3.5/qtdesigner.html). И не только. QFormBuilder очень мощная возможностьНазвание: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: pasergey от Январь 24, 2018, 14:24 Подскажите, где можно скачать уже готовую версию для статической линковки для 5.10.0 ?
Название: Re: Статическая сборка Qt 5.4 для Win 7. Сжатие exe до мин. размера с помощью upx Отправлено: DarkHobbit от Январь 31, 2018, 16:36 Подскажите, где можно скачать уже готовую версию для статической линковки для 5.10.0 ? Уже готовую - это уже скомпилированную, что ли? Ну могу, например, поделиться, как раз недавно собирал. Только смысл? Статика она на то статика, что её каждый собирает под свои хотелки. Я вот например OpenSSL подключаю, зато выбрасываю веб, мультимедию, само собой примеры всякие (если очень допрёт - нужны пример соберу отдельно).А готовый архив, который можно распаковать и компилировать, например, здесь (https://download.qt.io/official_releases/qt/5.10/5.10.0/single/qt-everywhere-src-5.10.0.zip). |