Надо отметить, что в результате статической линковки размеры exe-файлов существенно возрастают. Например, изначально exe-файл занимал всего 1,38 МБ и требовал различных библиотек в сумме на 43,5 МБ. После описанных процедур он увеличился до 16,1 МБ. Но уже всё, что надо, у него есть.
Видео по статической сборке Qt
Протестировано для: Qt 5.3.2, компилятор MinGW 4.8.2 32bit, Windows 7 64bit. Написано на основе qt-project.org/wiki/How-to-build-a-static-Qt-for-Windows-MinGW но без использования Windows PowerShell.
Итак, нужно сделать следующее:
1. Скачать и установить:
a) Python
б) Ruby
в) Perl
г) сборку Qt 5.3.2 for Windows 32-bit (MinGW 4.8.2, 737.4 MB) с официального сайта
д) файлы исходников (source code) Qt с официального сайта
2. Проверить, что всё работает правильно
а) запустить Qt Creator, создать новый проект, собрать его, запустить;
б) закрыть Qt Creator и попробовать запустить *.exe отдельно от среды разработки;
в) убедиться в том, что программа требует кучу дополнительных библиотек;
г) закрыть всё, подумать о том, какая сложная штука — жизнь.
Теперь можно идти дальше.
3. Открыть файл С:\Qt\5.3\Src\qtbase\mkspecs\win32-g++\qmake.conf
Если папка Src отсутствует, то создайте папку Src и разархивируйте в неё исходники скаченные в пункте 1.д.
На всякий случай можно сделать бэкап.
Добавить в конец файла (взято из windows-build-qt-static.ps1):
Код: Выделить всё
# Static
QMAKE_LFLAGS += -static -static-libgcc
QMAKE_CFLAGS_RELEASE -= -O2
QMAKE_CFLAGS_RELEASE += -Os -momit-leaf-frame-pointer
DEFINES += QT_STATIC_BUILD
CONFIG += static
# Static
4. Создать пустую папку для статической сборки (C:\Qt\5.3\static)
В принципе, она может быть где угодно, главное чтобы была пустая.
Создать в ней файл make.bat с таким содержанием:
Код: Выделить всё
:: !!!check path!!!
set QtDir=C:\Qt\5.3\static
set MingwDir=C:\Qt\Tools\mingw482_32
set QtSrcDir=C:\Qt\5.3\Src
set CMAKE_INCLUDE_PATH=%MingwDir%\i686-w64-mingw32\include
:: Set a clean path including MinGW.
set PATH=%PATH%;%MingwDir%\bin;%MingwDir%\opt\bin
:: Force English locale to avoid weird effects of tools localization.
set LANG=en
:: Set environment variable QT_INSTALL_PREFIX. Documentation says it should be
:: used by configure as prefix but this does not seem to work. So, we will
:: also specify -prefix option in configure.
set QT_INSTALL_PREFIX=%QtDir%
:: Configure, compile and install Qt.
cmd /c "%QtSrcDir%\configure.bat -static -debug-and-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" > log_cmd.txt
mingw32-make -k -j4 > log_make.txt
mingw32-make -k -j4 install > log_make_install.txt
pause
Если всё правильно, сохранить и закрыть файл.
5. Открыть консоль cmd.exe и запустить make.bat
Этот процесс длится примерно час или два, в зависимости от скорости работы компьютера. Если всё завершилось через 5 минут или раньше, то что-то пошло не так.
В файлах log_cmd.txt, log_make.txt, log_make_install.txt можно почитать сообщения об ошибках.
6. Настроить Qt Creator.
Параметры -> Сборка и запуск -> Профили Qt -> Добавить
Выбрать файл С:\Qt\5.3\static\bin\qmake.exe
Название профиля: Qt (static)
Параметры -> Сборка и запуск -> Комплекты -> Добавить
Название: Static
Тип устройства: Desktop
Устройство: Локальный ПК
Sysroot: C:\Qt\5.3\static
Компилятор: MinGW
Отладчик: Не задан
Профиль Qt: Qt (static)
Теперь в Qt Creator доступен комплект статической сборки.
Проекты -> Сборка и запуск -> добавить -> Static
7. В файле проекта (*.pro) добавить флаги
Код: Выделить всё
QMAKE_LFLAGS += -static -static-libgcc
Это всё. Осталось только пересобрать свой проект с новым комплектом. Теперь можно запускать скомпилированные exe-файлы на любом компьютере под управлением Windows 7 или Windows XP. На других системах не тестировалось.
Взято тут