• Уменьшение отступа

    Обратная связь

    (info@ru-sfera.pw)

Делаем статический экзешник в QT (MinGW 4.8)


X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 068
Репутация
8 174
Хе, кто захочет кодить в QT для винды неизбежно столкнется с такой проблемой как невозможность запустить собранную программу без самого QT !

В этой теме расскажу как можно это обойти, ну и рассмотрим статическую сборку экзешника, а также сделаем свою сборку QT, так-что запасайтесь попкорном ! ;)

Итак как-же это обойти, приведу пару способов:

1)Самый простой способ, это поместить в папку с экзешником требуемые длл-ки, в общем-то и всё программа их подхватит, но возникнет вопрос, как передавать/распространять такую программу, волей не волей приходит на ум второй способ.

2)Это специальной тулзай, например мольбоксом (Можете сами написать какой упаковщик :)), упаковываем нашу программу, вместе с нужными дллками, кстати кто наблюдает за хак. разделом, скажет что-это ну очень похоже на крипторы и джойнеры, да-да это они и есть, только в данном случае мы используем это в благих целях гы-гы…

Минусы такого способа в том, что сам экзешник разрастается, может начинать глючить, ну и некоторые АВ могут начать матерится, идем дальше…

3)Создание самораспоковывающегося архива или инсталлятора, по мойму самый оптимальный способ, единственное инсталляторы многие платные, но можно и бесплатные найти…

Кстати в самом QTможно сделать не плохой инсталлятор, правда я пока не вкурил как это сделать, но если научусь напишу отдельную статью…

4)Ну и наконец пришли к названию данной темы, всё просто QT в момент компиляции программы будет упаковывать все нужные длл-ки прям в экзешник, в этоге мы сможем запускать наши программы без самого QT, позитивчик, НО способ на самом деле стрёмный, т.к. экзшник разрастается и может затормозится выполнение самой программы.
КОРОЧЕ ЮЗАЙТЕ ИНСТЕЛЛЫ !

Итак давайте попробуем собрать свой QT и сделать статический экзешник:

1)У меня заработало на QT 5.1.1, залил на яндекс полный пакет:

Хотя вышла уже 5.2, но не важно думаю принцип тот-же…

В момент установки ставите все галочки, иначе может не заработать и можем не собрать свою сборку из исходников, если в момент установки появится ошибка просто нажимаем «Пропустить»…

1.PNG


2) Скачиваем и устанавливаем и .

3) Создайте новую папку, в директории QT куда вы скопируете содержимое qtbase после окончания сборки.

Например как на скриншёте:

_2.png


4) Редактируем D:\Qt\5.1.1\Src\qtbase\mkspecs\win32-g++\qmake.conf, находим QMAKE_LFLAGS, заменяем на QMAKE_LFLAGS = -static -static-libgcc

5)Далее нам нужно создать переменные среды, выполнить команды из консоли, я ну очень ленивый человек, поэтому создал батник в этой дерриктории:

D:\Qt\5.1.1\Src\qtbase (static.bat)

В батнике пишем следующее:

SET "QTDIR=%~dp0"

SET "QTDIR=%QTDIR:~0,-1%"

SET QMAKESPEC=win32-g++

SET PATH=C:\Python27;C:\Perl\bin; D:\Qt\5.1.1\Tools\mingw48_32\bin; D:\Qt\5.1.1\Src\qtbase\bin; D:\Qt\5.1.1\Tools\mingw48_32\bin;%QTDIR%\bin;%PATH%

cmd.exe

ВАЖНО ПРОВЕРЬТЕ ПУТИ, МОГУТ ОТЛИЧАТЬСЯ !!!

Далее запускаем батник и вводим следующую команду:

configure.exe -debug-and-release -opensource -static -opengl desktop -no-vcproj -nomake examples

Согласшаемся с лицензионным соглашением и бла-бла-бла ! ;)

Как всё сделаеться запускаем компилятор и делаем сборку, командой:

mingw32-make

Далее идём пить чай, т.к. делаться будет около часа, гы-гы ! :)

Также хотелось бы обратить внимание на обязательное наличие -nomake examples, иначе сборка займёт неприлично долгое время и съест примерно 50 ГБ свободного пространства. Оно вам надо?

6)Как всё собирётся делаем следующее:

Копируем содержимое D:\Qt\5.1.1\Src\qtbase в папку, созданную в пункте 3. Можно копировать не всё. Файлы, лежащие в корне этой папки, а также папки .obj, config.tests, dist, qmake, src, tests, util нам не нужны.

Теперь необходимо прописать новую конфигурацию в Qt Creator. Запускаем его.

7) Tools/Options/Build&Run/Qt Versions. Добавляем новую версию, указываем путь к qmake, который лежит в нашей новой папке слэш bin.

_3.png


8) Tools/Options/Build&Run/Kits. Добавляем новый, указываем версию Qt, созданную ранее.

_4.png


9) Всё готово. Теперь создаём GUI проект, выбираем новую конфигурацию, компилируем. Если размер полученного приложения внушителен (больше 1 МБ), значит, всё получилось. Но на всякий случай проверяем, запустив его.

У меня получилось, у кого не получится, проверьте пути…

И ещё скажу, что у меня экзешник получился аж в 200 мегабайт, а-а-а, что-бы уменьшить перейдите и скомпилируйте в релизе, а не в отладке…

И ещё скажу что экзешник получается всё равно достаточно увесистый, у меня получился в 12 мегабайт, почти пустой проект, но зато можно запускать на любой винде и без QT !

Если я никого не напугал, создавайте проги в QT, правда штука ОЧЕНЬ сложная в Bulder C++ всё гораздо прощё… ! ;)

Во вложении собранный мною статический экзешник, просто выводит окошко, можете попробовать…
 

Вложения

  • Statik_test.zip
    5.5 МБ · Просмотры: 6
Автор темы Похожие темы Форум Ответы Дата
X-Shar С++ 0
Верх Низ