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

Тема в разделе "С++", создана пользователем X-Shar, 13 фев 2014.

↑ ↓
  1. X-Shar :)
    X-Shar
    Ответить в чате

    Администрация

    Регистрация:
    03.06.2012
    Сообщения:
    5.810
    Симпатии:
    427
    Пол:
    Мужской
    Репа:
    +961 / 152 / -29
    Jabber:
    Skype:
    ICQ:

    638294628

    Хе, кто захочет кодить в QT для винды неизбежно столкнется с такой проблемой как невозможность запустить собранную программу без самого QT !

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

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

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

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

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

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

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

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

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

    1)У меня заработало на QT 5.1.1, залил на яндекс полный пакет:http://yadi.sk/d/sunOlqDqHpix7

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

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

    1.PNG

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

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

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

    _2.

    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.

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

    _4.

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

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

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

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

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

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

    Вложения:

    • Мне нравится Мне нравится x 4
  2. X-Shar :)
    X-Shar
    Ответить в чате

    Администрация

    Регистрация:
    03.06.2012
    Сообщения:
    5.810
    Симпатии:
    427
    Пол:
    Мужской
    Репа:
    +961 / 152 / -29
    Jabber:
    Skype:
    ICQ:

    638294628

    • Мне нравится Мне нравится x 2

Поделиться этой страницей