Enlace estático de Qt 5.xx con MinGW32 en Windows (ensamblado en un exe'shnik)

¡Buen día, residentes de Khabrav!



Estoy seguro de que todos notaron que cuando implementaron su programa a través de windeployqt.exe, el programa depende de diferentes bibliotecas dinámicas y qt. Como resultado, escanear en otras computadoras se vuelve inconveniente. ¿Por qué? Tenemos que mantener el exe'shnik en la carpeta con las bibliotecas necesarias. Por supuesto, puede solucionar este problema sin enlaces estáticos. De acuerdo, es un inconveniente y cada vez que necesita hacer movimientos corporales adicionales. Es más fácil desgastarse una vez y luego no hacer movimientos innecesarios. Otra ventaja de la vinculación estática es el tamaño del archivo. Con la vinculación dinámica, el archivo exe en sí pesa entre 1 MB y 7-8 MB, y con el entorno puede alcanzar fácilmente los 70 MB, incluso si el proyecto es pequeño. Con la vinculación estática, solo hay un exe, que pesa aproximadamente 2 veces menos que el entorno con vinculación dinámica.



Para el montaje necesitas:



  • Qt 5.xx con componentes habilitados (si Qt ya se ha instalado, los componentes necesarios se pueden instalar con la herramienta de mantenimiento Qt):

  • Qt - Qt 5.x - MinGW xxx 32 bits

  • Qt - Qt 5.x - Fuentes

  • Qt - Herramientas - MinGW

  • Perl (Strawberry Perl, por ejemplo). Estoy usando strawberry-perl-5.30.2.1-32bit.

    Compruebe que la ruta al archivo ejecutable de Perl esté registrada en la variable de entorno PATH. Puede omitir este punto, pero es mejor comprobarlo.
  • Python 3.8



La ruta de instalación de Qt no es importante, lo tengo instalado en la unidad D. Asegúrese de tener suficiente memoria disponible. Necesita al menos 30 GB de espacio libre.



El algoritmo en sí:



  1. Vaya al directorio donde se encuentra la carpeta Src (D: \ Qt \ 5.xx \ Src);
  2. Allí, cree una carpeta estática (D: \ Qt \ 5.x.x \ 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
    • Compilador:

      a) para C: MinGW xxx de 32 bits para C

      b) para C ++: MinGW xxx de 32 bits para C ++

    • Perfil de Qt: Qt static x32 (el nombre de perfil que proporcionó al agregar el perfil)
    • Aplicar -> Ok


  12. Solo queda reconstruir su proyecto con un nuevo kit.


Información Adicional. Tengo:



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


El vuelo es normal.



Tomé información de aquí:






All Articles