Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.net  
   

Die mobilen Seiten von c++.net:
https://m.c-plusplus.net

  
C++ Forum :: Andere GUIs - Qt, GTK+, wxWidgets ::  QT - static build  
Gehen Sie zu Seite Zurück  1, 2, 3, 4, 5  Weiter
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
picaschaf
Mitglied

Benutzerprofil
Anmeldungsdatum: 30.12.2010
Beiträge: 28
Beitrag picaschaf Mitglied 17:24:39 07.01.2017   Titel:              Zitieren

It0101 schrieb:
Der Hauptgrund für das statische Linken für den firmeninternen Gebrauch ist, dass ich ein schlankes kompaktes Binary habe, ohne 50MB DLLs im Gepäck. Es ist einfach komfortabler.


Aber gerade dann will ich doch eben nicht statisch linken. Wenn du nun mehrere Programme hast können die sich nicht eine Qt Installation teilen, sondern beide schleppen alles mit.

Wenn du nur 1 Binary zum Verteilen lieber hast, aber keinen Installer erstellen möchtest, kann ich dir UPX Packer empfehlen. Der komprimiert noch dazu das Binary.

_________________
www.bitshift-dynamics.com
It0101
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.07.2004
Beiträge: 2042
Beitrag It0101 Mitglied 17:55:29 07.01.2017   Titel:              Zitieren

Danke für den Tipp. Ich werd mir den mal angucken. Löst vielleicht auch mein Problem.
partsoft
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.04.2016
Beiträge: 31
Beitrag partsoft Mitglied 19:20:02 07.01.2017   Titel:              Zitieren

@picaschaf

Danke für den Tipp, den UPX Packer werde ich mir auch einmal anschauen. Für Windows nutze ich übrigens Inno Setup, dort hat man sich relativ schnell eingearbeitet und auch Code-Signing ist kein Problem: http://www.jrsoftware.org/isinfo.php

@It0101

Nach der Installation von Python hat jetzt alles geklappt. Du musst in "build.cmd" dann nur den Pfad zu Python hinzufügen. Außerdem habe ich configure diesmal zusätzlich mit dem Parameter "-nomake examples" aufgerufen, denn die statisch gelinkten Beispiele belegen ca. 100 GB Speicherplatz :eek:

Aber wie versprochen schreibe ich die Tage noch eine vernünftige Anleitung dazu, dann auch für neuere Qt-Versionen.

_________________
https://www.partsoft.de
Softwareentwicklung und Vertrieb
picaschaf
Mitglied

Benutzerprofil
Anmeldungsdatum: 30.12.2010
Beiträge: 28
Beitrag picaschaf Mitglied 19:23:27 07.01.2017   Titel:              Zitieren

InnoSetup nutzen wir auch in manchen Projekten. Wenn man sich an die Pascal Syntax gewöhnt hat oder mit den Defaults zufrieden gibt ist alles fein ;) Damit lässt sich auch der Qt Redistributable Installer mit nur wenigen MiB als Abhängigkeit mitinstallieren. Spart bei mehreren Qt Applikationen auf dem selben Rechner Speicherplatz - löst aber natürlich nicht die altbekannte DLL Hell unter Windows.

Weil wir hier über Qt sprechen möchte ich auch noch das Qt Installer Framework einwerfen das auch mittlerweile recht benutzbar ist und nicht mehr zwingend selbst gebaut werden muss.

_________________
www.bitshift-dynamics.com
It0101
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.07.2004
Beiträge: 2042
Beitrag It0101 Mitglied 19:30:12 07.01.2017   Titel:              Zitieren

partsoft schrieb:

@It0101

Nach der Installation von Python hat jetzt alles geklappt. Du musst in "build.cmd" dann nur den Pfad zu Python hinzufügen. Außerdem habe ich configure diesmal zusätzlich mit dem Parameter "-nomake examples" aufgerufen, denn die statisch gelinkten Beispiele belegen ca. 100 GB Speicherplatz :eek:

Aber wie versprochen schreibe ich die Tage noch eine vernünftige Anleitung dazu, dann auch für neuere Qt-Versionen.



Mir ist zwischendurch auch der Speicherplatz ausgegangen. Mein "C:" ist ne SSD... naja ich habe jetzt nochmal bissel aufgeräumt und das "-nomake examples" mit reingenommen. Und dann schaue ich mal wie weit ich jetzt komme. ;) Danke dir erstmal! Wird schon noch!
It0101
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.07.2004
Beiträge: 2042
Beitrag It0101 Mitglied 19:58:09 07.01.2017   Titel:              Zitieren

Anmerkung von mir: der Python-Installer generiert nicht standardmäßig die "python.exe" im Verzeichnis. Das muss man explizit im Python-Installer einrichten. Das war mein Fehler. Python installiert, aber keine Python.exe da ;-)

Kaum macht mans richtig.... ;-)


Zuletzt bearbeitet von It0101 am 19:58:36 07.01.2017, insgesamt 1-mal bearbeitet
It0101
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.07.2004
Beiträge: 2042
Beitrag It0101 Mitglied 08:39:38 08.01.2017   Titel:              Zitieren

Ich bin jetzt mit dem Build von QT fertig und habe den neuen Kit im QTCreator eingerichtet. Release-Buildprozess einer TestAnwendung hat auch soweit funktioniert.

Nur startet die gebaute Executable trotzdem nicht.

".... kann nicht gestartet werden, da libgcc_s_dw2-1.dll auf dem Computer fehlt..."

Kann das sein, dass hier bei meinem MINGW noch was nicht passt? Vermutlich muss ich im Projektfile noch eine zusätzliche Compileroption mitgeben, damit mingw dann auch die c++-Sachen statisch linkt, oder?


Problem behoben:

Im QTCreator-Projektfile gehört noch folgender Eintrag dazu, damit auch der Compiler es rafft:

Code:
LIBS += -static



Vielen Dank euch allen für eure Hilfe!

Jetzt gehe ich erstmal hin und teste den Vorschlag von PicaSchaf ;-)


Zuletzt bearbeitet von It0101 am 08:44:01 08.01.2017, insgesamt 2-mal bearbeitet
It0101
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.07.2004
Beiträge: 2042
Beitrag It0101 Mitglied 10:00:02 08.01.2017   Titel:              Zitieren

Was mir noch aufgefallen ist. Mein simples Testprogramm mit einem einzigen Widget ist statisch gelinkt ganze 16MB groß...

Ich habe damals Frontends mit CBuilder6 entwickelt und auch statisch gelinkt. Da waren selbst 2-3MB schon viel für ein Frontend mit Funktionialität.

Aber 16MB für nix?


Anmerkung: Der GCC-Aufruf sieht folgendermaßen aus:

g++ -Wl,-s -Wl,-subsystem,windows -mthreads -o release\testcomp.exe release/main.o release/mainwindow.o release/qroundprogressbar.o release/testcomp_plugin_import.o release/qrc_res.o release/moc_mainwindow.o release/moc_qroundprogressbar.o -lmingw32 -LD:\qt\qt-everywhere-opensource-src-5.7.1\qtbase\lib D:\qt\qt-everywhere-opensource-src-5.7.1\qtbase\lib\libqtmain.a -static D:\qt\qt-everywhere-opensource-src-5.7.1\qtbase\lib\libQt5Widgets.a -LD:\qt\qt-everywhere-opensource-src-5.7.1\qtbase\plugins\platforms D:\qt\qt-everywhere-opensource-src-5.7.1\qtbase\plugins\platforms\libqwindows.a -lwinspool -lshlwapi D:\qt\qt-everywhere-opensource-src-5.7.1\qtbase\lib\libQt5PlatformSupport.a D:\qt\qt-everywhere-opensource-src-5.7.1\qtbase\lib\libQt5DBus.a -lnetapi32 D:\qt\qt-everywhere-opensource-src-5.7.1\qtbase\lib\libqtfreetype.a -LD:\qt\qt-everywhere-opensource-src-5.7.1\qtbase\plugins\imageformats D:\qt\qt-everywhere-opensource-src-5.7.1\qtbase\plugins\imageformats\libqdds.a D:\qt\qt-everywhere-opensource-src-5.7.1\qtbase\plugins\imageformats\libqicns.a D:\qt\qt-everywhere-opensource-src-5.7.1\qtbase\plugins\imageformats\libqico.a D:\qt\qt-everywhere-opensource-src-5.7.1\qtbase\plugins\imageformats\libqtga.a D:\qt\qt-everywhere-opensource-src-5.7.1\qtbase\plugins\imageformats\libqtiff.a D:\qt\qt-everywhere-opensource-src-5.7.1\qtbase\plugins\imageformats\libqwbmp.a D:\qt\qt-everywhere-opensource-src-5.7.1\qtbase\plugins\imageformats\libqwebp.a D:\qt\qt-everywhere-opensource-src-5.7.1\qtbase\lib\libQt5Gui.a -lcomdlg32 -loleaut32 -limm32 -lwinmm -lglu32 -lopengl32 -lgdi32 D:\qt\qt-everywhere-opensource-src-5.7.1\qtbase\lib\libqtpng.a D:\qt\qt-everywhere-opensource-src-5.7.1\qtbase\lib\libqtharfbuzzng.a D:\qt\qt-everywhere-opensource-src-5.7.1\qtbase\lib\libQt5Core.a -lole32 -luuid -lws2_32 -ladvapi32 -lshell32 -luser32 -lkernel32 -lmpr -lz D:\qt\qt-everywhere-opensource-src-5.7.1\qtbase\lib\libqtpcre.a


Linkt QT automatisch einfach alles rein?


Zuletzt bearbeitet von It0101 am 10:33:34 08.01.2017, insgesamt 1-mal bearbeitet
partsoft
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.04.2016
Beiträge: 31
Beitrag partsoft Mitglied 14:03:06 18.01.2017   Titel:              Zitieren

Ich habe das jetzt alles einmal sauber aufgeschrieben und auf der Website von Partsoft veröffentlicht:

https://www.partsoft.de/i ....... ex-1-0/15-qt-static-build

_________________
https://www.partsoft.de
Softwareentwicklung und Vertrieb
firefly
Mitglied

Benutzerprofil
Anmeldungsdatum: 03.04.2002
Beiträge: 593
Beitrag firefly Mitglied 15:47:45 18.01.2017   Titel:              Zitieren

It0101 schrieb:
Was mir noch aufgefallen ist. Mein simples Testprogramm mit einem einzigen Widget ist statisch gelinkt ganze 16MB groß...

Ich habe damals Frontends mit CBuilder6 entwickelt und auch statisch gelinkt. Da waren selbst 2-3MB schon viel für ein Frontend mit Funktionialität.

Aber 16MB für nix?

Qt ist bestimmt umfangreicher als die Runtime vom CBuilder6

_________________
Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn.
C++ Forum :: Andere GUIs - Qt, GTK+, wxWidgets ::  QT - static build  
Gehen Sie zu Seite Zurück  1, 2, 3, 4, 5  Weiter
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.net ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.