Статическая сборка Qt4.8 + OpenSSL

Для выполнения статической сборки Qt4.8 потребуется:

  1. Скачать и установить MinGW;

  2. Скачать и установить ActivePerl;

  3. Скачать и установить OpenSSL;

  4. Скачать исходные тексты Qt 4.8;

  5. Распаковать исходные тексты в какой-нибудь каталог.

    Категорически рекомендуется исключить появление пробелов и/или кириллицы в пути. Далее используем путь D:\static-qt4.
  6. Редактировать файл D:\static-qt4\mkspecs\win32-g++\qmake.conf, а именно установить следующие константы равными:

    QMAKE_CFLAGS_RELEASE    = -Os -momit-leaf-frame-pointer
    
    QMAKE_LFLAGS = -static -static-libgcc -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc​
  7. Создать файл build.bat в D:\static-qt4 со следующим содержимым:
    echo off
    
    :: пути до MinGW и Perl ( ВНИМАНИЕ: установочные пути в Вашей системе могут отличаться )
    set MINGW_PATH=C:\mingw\bin
    set PERL_PATH=C:\Perl\bin
    
    :: исключаем из переменной среды %PATH% все ненужные для сборки библиотеки пути,
    :: т.к. это приводило к очень загадочным и неразрешимым ошибкам     
    set old_path=%PATH%
    set PATH=%MINGW_PATH%;%PERL_PATH%
    
    :: запоминаем время начала сборки       
    set starttime=%TIME%
    set startcsec=%STARTTIME:~9,2%
    set startsecs=%STARTTIME:~6,2%
    set startmins=%STARTTIME:~3,2%
    set starthour=%STARTTIME:~0,2%
    set /a starttime=(%starthour%*60*60*100)+(%startmins%*60*100)+(%startsecs%*100)+(%startcsec%)
    
    echo on
    
    :: выполняем конфигурирование библиотеки 
    :: ( ВНИМАНИЕ: пути до OpenSSL библиотеки в Вашей системе могут отличаться )        
    configure -opensource ^
              -release ^
              -nomake examples ^
              -nomake demos ^
              -no-qt3support ^
              -no-scripttools ^
              -no-opengl ^
              -openssl ^
              -no-webkit ^
              -no-phonon ^
              -no-style-motif ^
              -no-style-cde ^
              -no-style-cleanlooks ^
              -no-style-plastique ^
              -no-sql-sqlite ^
              -platform win32-g++ ^
              -static ^
              -qt-libjpeg ^
              -qt-zlib ^
              -qt-libpng ^
              -fast ^
              -I "C:\OpenSSL-Win32\include" ^
              -L "C:\OpenSSL-Win32\lib"
    
    :: запуск сборки
    mingw32-make
    
    :: фиксация времени окончания сборки
    echo off
    set endtime=%time%
    set endcsec=%endTIME:~9,2%
    set endsecs=%endTIME:~6,2%
    set endmins=%endTIME:~3,2%
    set endhour=%endTIME:~0,2%
    if %endhour% LSS %starthour% set /a %endhour%+=24
    set /a endtime=(%endhour%*60*60*100)+(%endmins%*60*100)+(%endsecs%*100)+(%endcsec%)
    
    :: расчёт затраченного на сборку времени        
    set /a timetaken= ( %endtime% - %starttime% )
    set /a timetakens= %timetaken% / 100
    set timetaken=%timetakens%.%timetaken:~-2%
    
    set /a timetakens_h=%timetakens%/3600
    set /a timetakens_m=(%timetakens% - %timetakens_h*3600)/60
    set /a timetakens_s=%timetakens%-%timetakens_h%*3600-%timetakens_m%*60
    
    echo Static Qt4.8 was built in %timetakens_h% hour(s), %timetakens_m% minutes and %timetakens_s% seconds
    
    :: восстановление исходного значения переменной %PATH%      
    echo off
    set PATH=%old_path%
  8. Запустить файл build.bat. Время сборки библиотеки составит несколько часов( ~2 ч 15 мин на Intel Core i3 с 2 Гбайт ОЗУ / Windows 7)
  9. По окончании сборки все интересующие нас файлы (с расширением *.а) появятся в каталоге D:\static-qt4\lib.

 

Компоновка пользовательского приложения со статически собранной Qt 4.8

    1. В Qt Creator идём в меню Инструменты -> Параметры -> Сборка и запуск -> Профили Qt.

    2. Нажимаем кнопку Добавить, Qt Creator попросит указать путь до qmake.exe в составе собранной библиотеки. Указываем:

    3. Указываем и возвращаемся к окну настроек, которое должно теперь выглядеть так:
    4. Закрываем окно настроек и на боковой вкладке выбираем "Проекты". В появившемся окне необходимо:
      • во-первых, изменить конфигурацию сборки на static-qt4;
      • во-вторых, указать профиль Qt "Qt 4.8.2 (static-qt4)" 
    5. Пересобрать пользовательский проект в конфигурации Release.

 

© ООО "Контроль-В" 2012 - 2018