Русский
Русский
English
Статистика
Реклама

Статическая линковка Qt 5.x.x с MinGW32 в Windows (сборка в один exeшник)

Доброго времени суток, хабравчане!

Я уверен, что все заметили, когда делали деплой своей программы через windeployqt.exe, программа зависит от разных динамических и qt'шных библиотек. Вследствие чего, развертка на других компьютерах становится неудобной. Почему? Приходится держать сам exe'шник в папке с нужными библиотеками. Разумеется, можно умудриться и без статической линковки решить эту проблему. Согласитесь, неудобно, да и каждый раз нужно лишние телодвижения делать. Проще один раз запариться и потом не делать лишних движений. Еще один плюс статической линковки размер файла. При динамической линковке сам exe'шник весит примерно от 1 МБ до 7-8 МБ, а с окружением до 70 МБ может спокойно дойти, даже если проект небольшой. При статической линковке есть только exe'шник, который весит примерно в 2 раза меньше, чем окружение при динамической линковке.

Для сборки необходимы:

  • Qt 5.x.x с включенными компонентами (если Qt уже был установлен, нужные компоненты можно установить с помощью Qt Maintenance Tool):
  • Qt Qt 5.x MinGW x.x.x 32 bit
  • Qt Qt 5.x Sources
  • Qt Tools MinGW
  • Perl (Strawberry Perl, к примеру). Я использую strawberry-perl-5.30.2.1-32bit.
    Проверить, что путь к исполняемому файлу Perl прописан в переменной окружения PATH. Этот пункт можно пропустить, но лучше проверить.
  • Python 3.8

Путь установки Qt неважен, у меня он установлен на диске D. Убедитесь, что объем доступной памяти вам хватит. Нужно как минимум 30 ГБ свободного места.

Сам алгоритм:

  1. Переходите в директорию, где папка Src (D:\Qt\5.x.x\Src);
  2. Там создайте папку static (D:\Qt\5.х.х\static);
  3. Папку Src копируйте в папку static. Получится D:\Qt\5.x.x\static\Src. Дальнейшие действия будут там, в Папке Src;
  4. Создайте папку mingwXX_32 (у меня, например, mingw73_32). Получится D:\Qt\5.x.x\static\mingwXX_32;
  5. Редактируйте файл qmake.conf, который находится в D:\Qt\5.х.х\static\Src\qtbase\mkspecs\win32-g++.

    В самый конец файла, после строки load(qt_config) допишите с новой строки эти команды:

    QMAKE_LFLAGS += -static -static-libgcc   QMAKE_CFLAGS_RELEASE -= O2           DEFINES += UNICODE QT_STATIC_BUILD
    

  6. Сохраниите файл qmake.conf;
  7. Откройте (ВНИМАНИЕ! НЕ CMD! НЕ CMD! НЕ CMD!) командную строку MinGW. В поисковике компьютера (на панели задач) пишите mingw.
    Командная строка MinGW будет выдана как Qt 5.x.x (MinGW x.x.x 32-bit)
  8. Введите в командную строку MinGW поочередно следующие команды:
    set LANG=en

    set QT_INSTALL_PREFIX="C:\Qt\5.8-static\mingw53_32"
    

    cd /d %QT_INSTALL_PREFIX%\..\Src (именно такая строка без изменений)

    configure.bat -static -debug-and-release -platform win32-g++ -prefix %QT_INSTALL_PREFIX% -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -opensource -confirm-license -make libs -nomake tools -nomake examples -nomake tests -qt-sqlite -no-ssl
    

    Тут стоит обратить внимание на опцию -no-ssl это значит что Qt будет собран без поддержки SSL.

    Если никаких ошибок нету, можно продолжать:
  9. Введите mingw32-make -k -j4
    Нереально длительный процесс, можете смело забыть про него на 4 часа ориентировачно, от скорости чтения/записи диска не зависит, а зависит от процессора. Там где -j4 вместо 4 поставьте число ядер вашего процессора.
  10. Введите mingw32-make -k install
    В результате получаем статическое окружение в D:\Qt\5.x.x\statiс\mingwXX_32;
  11. Настройка Qt Creator:
    • В верхнем меню Инструменты -> Параметры -> Профили Qt
    • Добавить -> D:\Qt\5.х.х\static\mingw73_32\bin\qmake.exe -> Применить
    • Комплекты -> Добавить
    • Название: Qt static x32 (или какое угодно)
    • Тип Устройства: Desktop
    • Устройство: Локальный ПК
    • Корень образа: D:\Qt\5.х.х\static
    • Компилятор:
      a) для С: MinGW x.x.x 32-bit for C
      b) для С++: MinGW x.x.x 32-bit for C++
    • Профиль Qt: Qt static x32 (название профиля, которое вы указали при добавлении профиля)
    • Применить -> Ок

  12. Остается только пересобрать свой проект с новым комплектом.

Дополнительная информация. У меня:

  • Qt 5.14.1
  • MinGW 7.3.0 32-bit (mingw73_32)
  • Python 3.8 x32
  • strawberry-perl-5.30.2.1-32bi
  • Windows 10 Pro x64

Полет нормальный.

Брал информацию отсюда:

Источник: habr.com
К списку статей
Опубликовано: 10.06.2021 10:07:14
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Qt

Qt 5.x.x

Mingw32

Статическая линковка

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru