среда, 31 июля 2013 г.

Как отучить Qt 5.1 от *.dll (статическая линковка)

Когда создаёшь приложения в Qt, установленным с официального сайта http://qt-project.org/ при компиляции из QtCreator всё работает, всё запускается. Но как только мы полезем за exe-шником в папке, то мы не сможем его запустить, т.к. он потребует от нас наличие в папке большого количества dll файлов. Конешно, можно засунуть все dll-ки в папку, а можно  запихать их в этот самый exe при компиляции. Для этого мы должны пересобрать компилятор.
Сразу говорю. Инструкция, которую я напишу ниже, сработала у меня на версии Qt 5.1.0 с MinGW и OpenGL. В принципе, от версии к версии технология не изменяется, меняются только детали. В инете уже создано большое количество тем по поводу этой проблемы.


Итак, начнём.

  1. Скачиваем Qt 5.1 http://download.qt-project.org/official_releases/qt/5.1/5.1.0/qt-windows-opensource-5.1.0-mingw48_opengl-x86-offline.exe
  2. Устанавливаем (при установке указываем, чтобы ставились все доступные пакеты).
  3. Скачиваем и устанавливаем perl и python.
  4. Редактируем файл D:\Qt\Qt5.1.0\5.1.0\Src\qtbase\mkspecs\win32-g++\qmake.conf
    1. Находим строчку QMAKE_LFLAGS =
    2. Заменяем на QMAKE_LFLAGS = -static -static-libgcc
    3. Сохраняем, закрываем.
  5. Конфигурируем
    1. Открываем консоль (желательно открыть консоль в пуске в папке Qt, называется Qt 5.1.0 for Desktop (MinGW 4.8 32 bit))
    2. Переходим в папку cd D:\Qt\Qt5.1.0\5.1.0\Src\qtbase
    3. Создаём переменные среды (Проверяйте пути, они могут у вас отличаться)
      1. set LIB=
      2. set INCLUDE=
      3. SET QTDIR=D:\Qt\Qt5.1.0\5.1.0\Src\qtbase
      4. SET QMAKESPEC=win32-g++
      5. SET PATH=C:\Python27;C:\Perl\bin;D:\Qt\Qt5.1.0\5.1.0\mingw48_3 2\bin;D:\Qt\Qt5.1.0\5.1.0\Src\qtbase\bin;%PATH%
    4. Запускаем конфигурацию (принимаем лицензию, когда спросит (вводим y, нажимаем Enter))
      1. configure.exe -debug-and-release -opensource -c++11 -static -opengl desktop -no-angle -no-vcproj
      2. mingw32-make.exe (Это может затянуться до часа)
  6. После того, запускаем QtCreator
Заходим в параметры

Выбираем всё как на скрине

На этом настройка заканчивается. При создании проекта нужно выбирать комплект, который мы настроили вручную.

Компилируем как выпуск, смотрим
Как видно, скомпилированная программа не требует dll фалов.




1 комментарий:

  1. Сейчас буду пробовать. А то везде инструкции есть, а ничего не работает.

    ОтветитьУдалить