Распространение программ на платформе Windows. Статическая линковка

Во многих случаях предпочтительней распространять приложение в виде автономного исполнимого файла, т.е. не тащить с собой билиотеки QtCore4.dll, QtGui4.dll и др. Данные рекомендации приведены для платформы Windows и компилятора MinGW/GCC, но их легко можно адаптировать для другой платформы и/или компилятора. Для избавления от лишних зависимостей потребуется пересобрать среду Qt со статической линковкой1. Перейдем в каталог Qt и выполним:

configure.exe -static -release  другие_ключи

Например:
configure.exe -static -debug-and-release -qt-zlib -qt-gif -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg -no-sse2

Если вы компилировали Qt ранее, то перед configure необходимо выполнить:

make confclean

Можно переходить к компиляции:
make

Если компиляция завершилась неудачно с сообщением об отсутствующем файле cc1.exe — добавте в переменную окружения PATH путь к этому файлу. Он находится:

каталогMinGW\libexec\gcc\mingw32\версия_компилятора

Теперь можно пересобрать ваши приложения. Зависимостей от динамических библиотек Qt нет. Однако размер исполнимых файлов может вас неприятно удивить. Также осталась зависимость от библиотеки mingwm10.dll. Она служит для потокобезопасного перехвата исключений. Если вы не пользуетесь исключениями C++, то можете удалить из файла Makefile ключ -mthreads , либо на этапе configure указать ключ -no-exceptions. Использование данного ключа уменьшит размер .exe файла на 15-20%. Для уменьшения размера исполняемых файлов может быть использован упаковщик исполняемых файлов UPX2

page_revision: 16, last_edited: 1234091714|%e %b %Y, %H:%M %Z (%O ago)
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License