[Tutorial] Qt libs für statisches linken builden MinGW



  • Dieses Tutorial erklärt, wie ihr die Qt libs mit eigener Konfiguration selbst erstellen könnt. Dies ist notwendig, wenn ihr Beispielsweise static linking verwenden wollt.
    Ich habe bereits mehrere Versionen erstellt und habe kürzlich meine Erfahrung mit dem erstellen von Qt erweitert.
    An dieser Stelle möchte ich @amahta danken, da er mir beim Verständnis sehr geholfen hat. Ich möchte auch gleich auf sein Tutorial hinweisen, in welchem er sehr detailliert erklärt, wie man Qt mit dem Visual Studio Compiler erstellt.

    ===============DOWNLOADS===============
    MinGW
    Aktuelle (5.5.1) Qt libs
    Skript Näheres später
    Perl Soweit ich weis, braucht ihr das nur, wenn ihr SSL einbinden wollt.
    Python Habe mal gelesen, dass man das braucht. Ich habe es bei meiner Konfiguration nicht gebraucht.

    ===========DIE SCHNELLE VARIANTE===========
    Wie in diesem Wiki erklärt braucht ihr nur das Script von oben auszuführen und seit fertig. Dies ist einfach, bequem und vollkommen starr. Deshalb gehe ich im Folgenden darauf ein, wie ihr das ganze manuell macht. Ihr könnt natürlich das Skript mit einem Editor bearbeiten und die Schritte nachvollziehen, ggf. anpassen, sodass ihr nicht alles einzeln machen müsst.

    ===============INSTALLATION===============
    Im folgenden werde ich meine eigene Ordnerstruktur vorstellen, ihr könnt diese Natürlich nach belieben anpasse. Vermeidet nur Leer- und Sonderzeichen.

    Entpackt die Source nach C:\Qt\5.5.1 und legt noch einen weiteren Ordner an: C:\Qt\5.5.1\MinGW_510_rev1_static
    In diesem landen nachher die erstellten libs. Den Source Ordner könnt ihr dann für eine andere Konfiguration/Compiler verwenden, oder löschen.

    MinGW kann jetzt auch nach C:\Programme (x86) installiert werden. Früher war dies wegen des Leerzeichens nicht möglich.

    Optional könnt ihr jetzt noch Perl und oder Python installieren.

    ===============VORBEREITUNG===============
    Fügt MinGW zu eurer Path Umgebungsvariable (im Folgenden UmgVar) hinzu.
    Drückt dafür die Windows Taste und gebt "Systemumgebungsvariablen bearbeiten" ein. Dort drückt ihr ganz unten auf "Umgebungsvariablen..". Sucht bei den System UmgVar nach Path und bearbeitet diese. Abhängig vom Betriebssystem müsst ihr am Ende des Textstrings eine ";C:\Program Files (x86)\mingw-w64\i686-5.2.0-win32-dwarf-rt_v4-rev1\mingw32\bin" ergänzen, oder auf Neu drücken und den Pfad dort eintragen. Beachtet etwaige Pfadabweichungen.

    Nun werden die Dateien für static build vorbereitet.
    Öffnet die Datei C:\Qt\5.5.1\qt-everywhere-opensource-src-5.5.1\qtbase\mkspecs\win32-g++\qmake.conf und passt folgendes an. Dabei steht -= für entfernen und += für ergänzen.

    QMAKE_LFLAGS += -static -static-libgcc
    QMAKE_CFLAGS_RELEASE -= -O2
    QMAKE_CFLAGS_RELEASE += -Os -momit-leaf-frame-pointer
    DEFINES += QT_STATIC_BUILD
    

    Jetzt für die Datei C:\Qt\5.5.1\qt-everywhere-opensource-src-5.5.1\mkspecs\win32-g++\qmake.conf

    CONFIG += static
    

    Ich habe in einem älteren Tutorial gelesen, dass auch folgendes angepasst werden muss. In dem Script wird dies nicht gemacht. Ich nehme an, dass es daher auch nicht notwendig ist. Falls ihr aber Fehlermeldungen bekommt, könnt ihr die Anpassung ja noch vornehmen:
    C:\Qt\5.5.1\qt-everywhere-opensource-src-5.5.1\qtbase\qmake\Makefile.win32

    LFLAGS = -static -static-libgcc
    

    ================QT KONFIGURIEREN================
    Öffnet eine Konsole. Wichtig es muss eine Windows Konsole sein. Nicht die von Qt.
    Dann wechselt ihr in das Verzeichnis C:\Qt\5.5.1\qt-everywhere-opensource-src-5.5.1

    Nun müsst ihr euren Build konfigurieren.

    configure -static -debug-and-release -prefix "C:\Qt\5.5.1\MinGW_510_rev1_static" -platform win32-g++ -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -qt-sql-sqlite -qt-sql-odbc -no-openssl -opensource -confirm-license -make libs -nomake tools -nomake examples -nomake tests -skip qtdeclarative -skip qtactiveqt -skip qtwebchannel
    

    Die meisten Einstellungen habe ich aus dem Script übernommen. Einzig die -skip Anweisungen habe ich ergänzt, da die Module Fehler verursacht haben. Was wohl an Windows 10 liegt. Vielleicht aber auch daran, dass ich Python und Perl nicht installiert habe. Da ich die Module nicht brauche, habe ich sie ausgeschlossen. Wenn einer von euch eine Lösung hat teilt es mir bitte mit.
    Weitere Spezifikationen findet ihr mit

    configure -h
    

    ===================QT BUILDEN===================
    Wenn keine Errors kommen können wir mit dem erstellen fortfahren.

    mingw32-make -k -j4
    

    -k steht dabei dafür, dass fortgefahren wird, wenn etwas nicht erstellt werden kann und
    -jX weist mingw an X Prozesse zu benutzen. Wenn ihr mehr Kerne habt, könnt ihr die natürlich auch verwenden..
    Wenn der Vorgang zu lange dauert, könnt ihr Module ausschließen, wie in obigem Beispiel die examples. Außerdem könnt ihr den Vorgang mit Ctr+C abbrechen und am nächsten Tag fortsetzten. Einfach wieder mingw32-make -k -j4 eingeben.

    =================QT INSTALLIEREN=================
    Durch die Installation werden die Dateien vom Source Ordner in euren mit -prefix definierten Ordner kopiert

    mingw32-make -k install
    

    =================LIBS EINBINDEN==================
    Nun ist Qt fertig erstellt und ihr könnt die neue qmake.exe in Qt Creator einbinden.
    Dafür geht ihr auf extras>einstellungen>Erstellung und Ausführung>Qt Versionen.
    Dort auf Hinzufügen. Als Pfad gebt ihr dann die neue qmake.exe an, die im Ordner C:\Qt\5.5.1\MinGW_510_rev1_static\bin liegt.
    Danach geht ihr oben auf Kits und sagt Hinzufügen. Wichtig, ihr dürft nicht den oberen Klonen.
    Als Einstellungen wählt ihr:

    • Name: Was euch gefällt, z.B.Desktop Qt 5.5.1 MinGW 32bit static.
    • Gerätetyp: Desktop
    • Gerät: Lokal ausführen (Vorgabe für Desktop)
    • Sysroot: nichts
    • Compiler: MinGW (x86 32bit in C:\Program Files (x86)\mingw-w64\i686-5.2.0-win32-dwarf-rt_v4-rev1\mingw32\bin) | hier nicht den vom Qt Creator benutzen!! Es muss der sein, mit dem ihr die libs erstellt habt!
    • Debugger: könnt ihr dann automatisch bestimmen lassen. Sollte im Verzeichnis C:\Program Files (x86)\mingw-w64\i686-5.2.0-win32-dwarf-rt_v4-rev1\mingw32\bin\gdb.exe gefunden werden.
    • Qt-Version: Die von euch eben erstellte.
    • Qt-mkspec: nichts.

    Qt wird euch dann ein gelbes Warnzeichen bei dem neuen Kit und der Neuen Version anzeigen, das könnt ihr Ignorieren.
    Und damit seit ihr fertig. Wenn ihr nun ein neues Projekt anlegt, könnt ihr das jeweilige Kits auswählen, oder auch beide gleichzeitug verwenden. Dann könnt ihr unten links einstellen, welches Kit genommen wird.

    Falls ihr ein bereits vorhandenes Projekt statisch builden wollt, dann geht ihr in der linke Leiste auf "Projekte", wählt oben euer Projekt aus und dann bei "Erstellung und Ausführung" geht ihr auf "Kit hinzufügen", wählt das statische und nun könnt ihr es statisch builden ;)



  • bq. Danach entpackt ihr die libs nach C:\Qt\Qt_5.3.1_static\… (keine Leer- und/oder Sonderzeichen!)

    welche libs, woher?



  • das ist die source zip datei
    http://download.qt-project.org/official_releases/qt/

    Der Link steht unter downloads


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.