doofes qmake



  • Sry für Doppelpost, hab aber gerade etwas sehr hilfreiches gefunden:

    Compileroptimierung - http://www.formortals.com/build-qt-static-small-microsoft-intel-gcc-compiler/

    statisch verlinken - http://www.formortals.com/how-to-statically-link-qt-4/

    Wer mag, kann das ja dem FAQ hinzufügen, ich hätte es gebraucht^^



  • bitte entschuldigt den Triplepost, aber:

    ...jetzt geht _nichts_ mehr^^

    Ich bekomme es einfach nicht hin, weil es so viele unterschiedliche Erklärungsansätze gibt - der offizielle Leitfaden, den ich oben verlinkt habe, behauptet dies - die beiden anderen Quellen jenes...

    Kann mir jemand aus der Bredouille helfen und mir Schritt für Schritt erklären was ich wie machen muss?
    Wie compile ich die libraries richtig und wie verweise ich im Creator darauf?
    Kann ich die Libs auch in der Ordnerstruktur sehen?
    Wie ihr seht, Fragen über Fragen, ganz von Anfang an bitte 🙂

    Habe auch schon verschiedene Installationspfade ausprobiert - mit dem Ergebnis, dass g++ noch im alten Verzeichnis von der allerersten Installation gesucht wurde...

    Bitte helft mir weiter, ich will Qt-Creator nicht wegen so einem ärgerlichen Fehler unter den Tisch fallen lassen 😞



  • falscher thread

    sorry



  • Soo...ich habe jetzt mein Problem lösen können.

    Wie gesagt:

    1. configure -static eingeben
    2. nmake sub-src oder für Leute mit MinGW mingw32-make um die static Libraries zu erstellen (dauert "etwas")

    Im Qt-Creator sollte man nach Ausführen der beiden Schritte
    unter 'Projekte' die Release-Version auswählen und unter 'Erstellungsschritte' die Details von QMake anzeigen lassen. Hier jetzt das zusätzliche Argument -config verbauen - Fertig!

    Leider ist damit die exe immer noch nicht allein, soweit ich bis jetzt getestet habe, müssen noch die DLLs

    `libgcc_s_dw2-1

    mingwm10`

    beigefügt oder im System installiert werden. Eine Möglichkeit wäre jetzt, die Dateien über eine kleine Batch-Anweisung in das System-Verzeichnis kopieren zu lassen. Besser wäre es noch, wenn sie auch inkludiert würden.

    Über Mithilfe wäre ich sehr dankbar 😃

    PS: Entschuldigt dass ich den Thread alleine am Leben erhalte, ich finde das wichtig^^



  • Hallo,
    mit dem statischen Linken kann ich dir jetzt zwar nicht weiterhelfen, aber meine Frage wäre hier welche Qt4.5 (Kommerziell/LGPL/GPL) Version du nutzt und unter welcher Lizenz deine Software läuft?! Je nach genutzer Version mußt du auf einige Dinge bzgl. der Lizenz achten.



  • guenni81 schrieb:

    Hallo,
    mit dem statischen Linken kann ich dir jetzt zwar nicht weiterhelfen, aber meine Frage wäre hier welche Qt4.5 (Kommerziell/LGPL/GPL) Version du nutzt und unter welcher Lizenz deine Software läuft?! Je nach genutzer Version mußt du auf einige Dinge bzgl. der Lizenz achten.

    Klaro, momentan sind ein Großteil meiner Projekte auch noch unfertig.

    Ich verwende Qt 4.6 (kam gerade im Dezember letzten Jahres raus) und zwar die OpenSource-Version. Beim Kompilieren von qmake hatte ich die Wahl zwischen
    Commercial und OpenSource-Version. Danach konnte ich mir LGPL und GPL durchlesen und zustimmen. Komischerweise war nur ein "Zustimmbuchstabe" da, insofern weiß ich nicht genau unter welcher Lizenz das läuft.
    Keinesfalls die kommerzielle, sondern eben LGPL oder GPL, wobei ich mit den Begriffen nicht sonderlich viel anfangen kann. Bisher habe ich mir keine großen Gedanken darüber gemacht, meine Software zu veröffentlichen.
    Weshalb fragst du? Durch das statische Kompilieren verändere doch die Dateien nicht?



  • Das mit der LGPL bzw. GPL ist gar nicht so einfach. Solange du dein Programm nicht verkaufst bzw. veröffentlichst sollte es keine große Rolle spielen.
    Ich frage da du statisch linkst. Die Qt Dateien veränderst du hier zwar nicht, aber laut LGPL muß der Benutzer die Möglichkeit haben die Dateien die unter der LGPL sitzen austauschen zu können. Ich wollte hier nur auf das ganze hinweisen, nicht das du am Ende eine Applikation hast die du verkaufen möchtest und hier Lizenzprobleme kriegst. 😉

    Einiges zur Lizenz LGPL findest du unter http://www.qtforum.de/forum/viewtopic.php?t=10026



  • guenni81 schrieb:

    Das mit der LGPL bzw. GPL ist gar nicht so einfach. Solange du dein Programm nicht verkaufst bzw. veröffentlichst sollte es keine große Rolle spielen.
    Ich frage da du statisch linkst. Die Qt Dateien veränderst du hier zwar nicht, aber laut LGPL muß der Benutzer die Möglichkeit haben die Dateien die unter der LGPL sitzen austauschen zu können. Ich wollte hier nur auf das ganze hinweisen, nicht das du am Ende eine Applikation hast die du verkaufen möchtest und hier Lizenzprobleme kriegst. 😉

    Einiges zur Lizenz LGPL findest du unter http://www.qtforum.de/forum/viewtopic.php?t=10026

    Danke für den Hinweis, aber mein Programm würde wahrscheinlich keiner kaufen, so einfach wie es gestrickt ist 🙂
    Habe gerade rausgefunden, dass mein Lizenztyp LGPL ist.



  • Ich verlasse mal meinen Thread zur gleichen Problematik und antworte hier.
    Erstmal vielen Dank für deine Nachforschungen, n0stradamus - nach zwei Kompilierversuchen und viel Wartezeit kann auch ich jetzt statisch auf meine QT-Libs verlinken :).
    Damit sind schonmal die ganzen beizulegenden .dll-Dateien entfallen und die Programmgröße ist ein wenig geschrumpft.
    Hast du (oder jemand anders) vielleicht noch einen Rat, wie man das ausführbare Programm etwas kleiner bekommt? Ich hatte einst ein 120KB-Konsolen-Ansi C-Programm...jetzt habe ich eine GUI zugefügt und das gleiche Programm ist 8,8MB groß. Ist QT einfach so schwer beladen oder kann man davon ausgehen, dass dort viel Code eingebunden wird, der unnötig ist?

    Was übrigens die beiden von dir erwähnten .dll-Dateien angeht: Es scheint Compiler-abhängig zu sein, ob die statisch verlinkt werden oder nicht. Wenn ich den QTCreator nutze, muss ich sie auch beifügen (eigentlich kein Problem, da sie sehr klein sind). Wenn ich aber mit Eclipse+MinGW+QT-Plugin kompiliere, dann muss ich sie nicht mehr zur .exe schieben.

    PS: Ich finde, dieser Thread sollte sich in die FAQ einreihen - zu diesem Thema gibt es dort noch keine Infos (wenn ich nichts übersehen habe). Und das Wissen ist definitiv wertvoll.

    EDIT: Ich habe mir gerade diesen Artikel http://blog.lugru.com/2009/03/qt-static-mingwm10dll-and-deployment-under-windows-environment/ durchgelesen - da gibt es noch ein paar interessante Dinge. Vor allem der Packer für ausführbare Dateien, der am Ende vorgestellt wird, hat sich als nützlich erwiesen (mein Programm hat jetzt noch 3,22MB).



  • Stiefel2000 schrieb:

    Ich verlasse mal meinen Thread zur gleichen Problematik und antworte hier.
    Erstmal vielen Dank für deine Nachforschungen, n0stradamus - nach zwei Kompilierversuchen und viel Wartezeit kann auch ich jetzt statisch auf meine QT-Libs verlinken :)Was übrigens die beiden von dir erwähnten .dll-Dateien angeht: Es scheint Compiler-abhängig zu sein, ob die statisch verlinkt werden oder nicht. Wenn ich den QTCreator nutze, muss ich sie auch beifügen (eigentlich kein Problem, da sie sehr klein sind). Wenn ich aber mit Eclipse+MinGW+QT-Plugin kompiliere, dann muss ich sie nicht mehr zur .exe schieben.

    Wenn das mit den dlls so ist, dann bleib ich bei QTCreator, damit macht es wirklich Spaß. Ist ja wirklich kein Problem die beiden einfach mitzugeben 🙂

    PS: Ich finde, dieser Thread sollte sich in die FAQ einreihen - zu diesem Thema gibt es dort noch keine Infos (wenn ich nichts übersehen habe). Und das Wissen ist definitiv wertvoll.

    Finde ich auch! 🙂



  • n0stradamus schrieb:

    Wenn das mit den dlls so ist, dann bleib ich bei QTCreator, damit macht es wirklich Spaß. Ist ja wirklich kein Problem die beiden einfach mitzugeben 🙂

    Ich musste leider herausfinden, dass es NICHT so ist. Die anderen beiden Libs schienen einfach eingebunden zu werden, obwohl sie nicht im Ordner lagen. Aber ich habe noch so einiges dazu herausgefunden:
    Der Link oben beschreibt dir, wie du die mingw10.dll (o.ä.) loswirst. Die Methode ist zwar nicht sonderlich attraktiv (du musst dein QT neu kompilieren), aber es funktioniert wunderbar.
    Was die zweite Datei angeht: Du kannst dem Linker beim Kompilieren sagen, dass er statisch darauf verlinken soll. Mit dem Parameter -static-libgcc kannst du dich auch dieser Lib entledigen.

    Nutzt du ganz am Ende noch den Packer für die .exe, werden die Dateien schön klein.

    Übrigens: Ich habe mein QT mit vielen Parametern neu kompiliert (das spart eine Menge Zeit) und festgestellt, dass dadurch auch die Größe der letztendlichen .exe sinkt. Ca. von 8,8MB auf 7,4MB.
    Die Parameter waren:

    Windows:
    configure -static -release -nomake examples -nomake demos -no-exceptions -no-qt3support -no-openssl -no-webkit -no-phonon -no-sql-sqlite -qt-libjpeg -platform win32-g++
    Linux:
    ./configure -static -prefix home/ich/Software/Qt/ -release -nomake examples -nomake demos -no-exceptions -no-qt3support -no-openssl -no-webkit -no-phonon -no-sql-sqlite -qt-libjpeg -platform linux-g++
    

    Wobei ich an der Linux-Version noch hantiere, da habe ich also noch keine handfesten Ergebnisse.



  • Kann es sein, dass
    -static-libgcc
    zu den Parametern bei -config gehört?
    Bei mir läuft es als Zusatzargument von QMake nämlich nicht.

    Das Thema hier sollte echt in die FAQ, bis man sich im Internet mal die ganzen Infos für eine funktionierende static-Qt-Version zusammengesucht hat, vergeht schon eine ganze Weile. Vor ein paar Tagen hätte mir das sehr geholfen 🙂


Anmelden zum Antworten