Qt SDK 4.8 статическая сборка проекта

image
В данном уроке я расскажу в картинках как собрать приложение статически/провести статическую линковку/ отучить ваш *.exe от библиотек Qt — кажется это всё одно и тоже по своей сути

Вступление:

Лично я всё проделывал со свеженькой на данный момент Qt SDK с сайта Nokia( Qt 4.8 и SDK 1.2.1)
Сам я полный нуб в Windows, так как всё жизнь сижу на Linux, так что всё сопровождается картинками, для таких же нубов в винде, как я сам.


Шаг 1.

Насколько я сам разобрался для нормальной сборки нам в системе понадобится Perl

Я его брал отсюда
image

Затем, насколько я понял, в винде творится жуткий беспорядок с тем, где хранятся либы и нужно вписывать вручную какие-то переменные, короче галочка на скрине должна от всего этого маразма избавить, так что советую её оставить

image
Ура, у нас есть Perl!

Шаг 2.

Теперь можно приступать к сборке Qt из исходников.

Первым делом я предлагаю скачать исходники
я взял эти , возможно и посвежей подойдут, но я рисковать не стал
теперь нужно распаковать это дело в X:\QtSDK\QtSources\4.7.4\
папок QtSources\4.7.4\ у вас не будет, их нужно создать

image

теперь нам нужно открыть вашим любимым блокнотом файлик
X:\QtSDK\QtSources\4.7.4\mkspecs\win32-g++\qmake.conf

найти строку, содержащую текст: QMAKE_LFLAGS
и привести её к такому вот виду:
QMAKE_LFLAGS = -static -static-libgcc -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
и сохранить файл.
image

Теперь нам нужно открыть пропатченный терминал(да простят меня виндузятники, если эта штука не так называется), который можно найти у себя, взглянув на мой скриншот
image

Теперь в этом терминале нам нужно перейти в каталог
X:\QtSDK\QtSources\4.7.4\

и забить команду
configure -static -debug-and-release -no-exceptions -openssl-linked -nomake demos -nomake examples
image



затем вам предстоит прочесть всё, что вам предложат прочесть и правильно ответить на вопросы

дождавшись выполнения команды(конца конфигурирования) и появления приглашения строки ввода, забиваем теперь команду(собираем библиотеку)
mingw32-make sub-src

после окончания терминал можно закрыть и проделать следующее
image

image

после того, как нажмёте «Собрать всё» может вывалится вот такая вот с первого взгляда непонятная штука, её я предлагаю просто закрыть и забыть о ней
image

Всё почти готово, осталось открыть свой проект и сделать несколько кликов, как на скринах
image
image

Всем спасибо за внимание, надеюсь у вас всё получилось.

Надеюсь данный урок послужит макетом для более тонкой сборки и настройки вашего окружения Qt.

Similar posts

Ads
AdBlock has stolen the banner, but banners are not teeth — they will be back

More

Comments 12

    0
    Что-то в интернетах такого вроде много, ничего нового. И на хабре было 100% совсем недавно, там ещё спорили в каментах легально это для не-GPL варианта или нет.

    з.ы. очень уж много пафосных отсылок «винду первый раз вижу». Тем более, что это наверняка неправда.
      0
      Да, про сборку статик версии под mingw уже статей полно, и даже эту видел на каком-то форуме пару дней назад, когда искал как собрать тоже самое только под msvc 2010, но так и не нашел. Вот про последнее я бы почитал.
        0
        я нигде не нашёл инструкции для чайников и спросил на форумах нужна ли таковая — мне сказали, что нужна, вот я и написал, многим уже пригодилась.
        +1
        Товарищ, который всю жизнь на линуксе два года назад настраивал инет в убунте, но сдался и пошёл покупать семёрку :)
        forum.ubuntu.ru/index.php?topic=111570.0
          0
          а мне лет просто не так уж и много, так что это правда — я всю жизнь на линуксе только сижу. В про семёрочку там откровенный сарказм
            0
            PS была проблема с маршрутами, дистрибутив люто лаганул
            0
            ну так уж и много, «Переменные среды» в винде первый раз видел — ничего не преврал
            0
            IMHO если говорить о статической линковке Qt-проектов, то нужно говорить во-первых о кроссплатформе — как сделать это под виндой, линуксом и маком как минимум. Во-вторых не говорить о mingw, если речь идет о винде.

            Ну а в третьих… было бы неплохо получить обхяснения. Почему нужно менять конфиг?
              0
              1) я вот осилил только под WIndows, извиняйте
              2) mingw — потому что по-умолчанию в Qt SDK, а статья — «ДЛЯ ЧАЙНИКОВ»
              3) статья — «РАБОТАЕТ И ЛАДНО»
              0
              Полностью согласен с Inquisitor. В сети и так полно таких пошаговых инструкций, которые ничего не объясняют, а только говорят «тыкай сюда и будет тебе счастье». В результате если что-то идет не так, читатель не может ничего исправить, потому что он просто не понимает, что делает. Если уж вы говорите, что нужно поправить конфиг на
              QMAKE_LFLAGS = -static -static-libgcc -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
              
              то было бы неплохо рассказать, зачем это нужно и что делает каждый флаг.
                –1
                я не знаю, в том то и дело, мне кажется каждый и сам справится с поиском КОНКРЕТИКИ, моя статья просто помогает стартануть. Для того, чтобы не возникло проблем я и указал версию SDK и исходников
                0
                Не получается проделать в W8. f3.s.qip.ru/gbw3dbUx.png Что делать? может собирать релиз пониже версией?

                Only users with full accounts can post comments. Log in, please.