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     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
It0101
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.07.2004
Beiträge: 2049
Beitrag It0101 Mitglied 09:57:07 08.12.2016   Titel:   QT - static build            Zitieren

Hi Leute


ich will mein QT-Projekt statisch bauen.
Ich habe schon Tutorials dazu gefunden, aber die sind fast alle so alt, dass nicht mal mehr der Verzeichnisbaum vom QT-Framework noch dem entspricht, was im Tutorial beschrieben wird.

Kennt jemand ein einigermaßen aktuelles Tutorial, was ich genau tun muss, um einen static-build meines aktuellen Projekts durchzuführen?
Ich verwende aktuell QT 5.6, welches mit dem QT-Developer 3.6.1 geliefert wurde.


gruß Tobi
Unregistrierter





Beitrag Unregistrierter 10:39:56 08.12.2016   Titel:              Zitieren

Hast du eine Lizenz? Mit der kostenlosen Version darfst du nicht statisch linken.
It0101
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.07.2004
Beiträge: 2049
Beitrag It0101 Mitglied 10:59:42 08.12.2016   Titel:              Zitieren

Naja wenn ich die Software nur für mich selbst brauche, sollte das egal sein.
firefly
Mitglied

Benutzerprofil
Anmeldungsdatum: 03.04.2002
Beiträge: 610
Beitrag firefly Mitglied 11:14:03 08.12.2016   Titel:              Zitieren

It0101 schrieb:
Naja wenn ich die Software nur für mich selbst brauche, sollte das egal sein.

Dann stellt sich die Frage wieso dann statisch linken? Wenn du das eh nur lokal verwenden möchtest?

_________________
Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn.
It0101
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.07.2004
Beiträge: 2049
Beitrag It0101 Mitglied 11:15:55 08.12.2016   Titel:              Zitieren

Ich formuliere es anders: ich will es nicht verkaufen und auch nicht kostenlos an externe weitergeben.

Wenn ich QT-Software weitergebe, dann nur dynamisch gelinktes Zeug. Aber jetzt will ich für den internen Gebrauch eine Software statisch linken.

Und ne Diskussion darüber wollte ich nicht lostreten.


Zuletzt bearbeitet von It0101 am 11:18:49 08.12.2016, insgesamt 1-mal bearbeitet
firefly
Mitglied

Benutzerprofil
Anmeldungsdatum: 03.04.2002
Beiträge: 610
Beitrag firefly Mitglied 12:11:48 08.12.2016   Titel:              Zitieren

Eine kurze google suche mit "build Qt5 static"
ergab unter den ersten 10 treffern folgende links:
http://dimitris.apeiro.gr ....... for-windows-by-compiling/
http://amin-ahmadi.com/20 ....... rosoft-visual-c-compiler/
https://wiki.qt.io/Buildi ....... t_for_Windows_using_MinGW

_________________
Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn.
It0101
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.07.2004
Beiträge: 2049
Beitrag It0101 Mitglied 13:23:10 08.12.2016   Titel:              Zitieren

Kenne ich bereits. Leider verweisen viele auf https://wiki.qt.io
wo die Links teilweise nicht mehr existieren, bzw. ins nichts verweisen.
Z.B. das hier
https://wiki.qt.io/Building_a_static_Qt_for_Windows_using_MinGW
erwähnte Script ".ps1" z.b. ist nicht mehr in dem Sourceforge-Projekt.


Einerseits wollen die pro Entwickler 80$ im Monat für ne kommerzielle Lizenz, andererseits funktioniert nicht mal das wiki ordentlich... Naja ich krieg das schon irgendwie hin.


Zuletzt bearbeitet von It0101 am 13:35:59 08.12.2016, insgesamt 2-mal bearbeitet
rewrew
Unregistrierter




Beitrag rewrew Unregistrierter 14:27:30 11.12.2016   Titel:              Zitieren

Zitat:
wo die Links teilweise nicht mehr existieren, bzw. ins nichts verweisen.


wayback machine.
partsoft
Mitglied

Benutzerprofil
Anmeldungsdatum: 28.04.2016
Beiträge: 40
Beitrag partsoft Mitglied 20:50:04 13.12.2016   Titel:              Zitieren

Welches Betriebssystem und mit welchem Compiler?

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

Benutzerprofil
Anmeldungsdatum: 06.07.2004
Beiträge: 2049
Beitrag It0101 Mitglied 14:36:00 02.01.2017   Titel:              Zitieren

Win7 64bit mit 4.9er MinGW 32bit
Hi
Unregistrierter




Beitrag Hi Unregistrierter 15:27:30 02.01.2017   Titel:              Zitieren

Statischen Qt build hast du schon? Da musst du bei Qt "configure" (vor dem build) einfach -static mit dazugeben.

Oder was genau ist das Problem?
partsoft
Mitglied

Benutzerprofil
Anmeldungsdatum: 28.04.2016
Beiträge: 40
Beitrag partsoft Mitglied 21:03:00 02.01.2017   Titel:              Zitieren

Ich hab das unter Windows und mit MinGW mal gemacht und kann Dir da wohl weiterhelfen. Leider hab ich mir die Schritte damals aber nicht aufgeschrieben, deshalb muss ich es erst selbst noch einmal ausprobieren. Heute Abend komme ich aber nicht mehr dazu, schau bitte in 2-3 Tagen nochmal hier rein!

@Hi: ich glaube nicht das er einen statischen Build hat, sonst gäbe es das Problem wohl nicht

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

Benutzerprofil
Anmeldungsdatum: 06.07.2004
Beiträge: 2049
Beitrag It0101 Mitglied 10:46:07 04.01.2017   Titel:              Zitieren

Erstmal danke für euer Feedback!

Ich habe das Problem, dass ich beides brauch.
Ich habe Anwendungen, die ich aus lizenzrechtlichen Gründen dynamisch bauen muss, und das interne Zeugs was ich statisch bauen will.

Und ich habe bisher nichts weiter getan als nen Ready-To-Use-QTCreator zu installieren. Seitdem habe ich nur entwickelt. Ich habe in meinem Leben noch kein QT konfiguriert :D
Hi
Unregistrierter




Beitrag Hi Unregistrierter 17:34:42 04.01.2017   Titel:              Zitieren

Das Problem kenn ich. Ich hab dafür mehrere builds erstellt, die ich dann in Visual Studio switchen kann. Wie das mit QTCreator geht, keine Ahnung.

Wie du selbst einen build erstellst, findest du zuhauf im Netz. Dann wiegsagt einfach bei der Konfiguration -static mitgeben.

Und die statischen Libs dann genauso wie auch andere verwenden.. wenn's noch Probleme gibt, meld dich einfach.
partsoft
Mitglied

Benutzerprofil
Anmeldungsdatum: 28.04.2016
Beiträge: 40
Beitrag partsoft Mitglied 15:11:06 05.01.2017   Titel:              Zitieren

Ich kann dir nicht 100% versprechen das es funktioniert, da ich aktuell noch beim kompilieren bin (Qt kompilieren dauert einige Stunden!).

Meine vorhandene Qt Installation befindet sich im Ordner "C:\Qt\Qt5.5.1" und den Quellcode habe ich in "C:\qt-static" entpackt. Die Pfade musst du in den folgenden Schritten entsprechend anpassen!

Zuerst habe ich ein kleines Skript für die Umgebungsvariablen erstellt (wie hier beschrieben: http://doc.qt.io/qt-5/windows-building.html).

Code:
SET _ROOT=C:\qt-static
SET PATH=%_ROOT%\qtbase\bin;%_ROOT%\gnuwin32\bin;C:\Qt\Qt5.5.1\Tools\mingw492_32\bin;%PATH%
SET QMAKESPEC=win32-g++
SET _ROOT=


Das Skript habe ich unter "C:\qt-static\build.cmd" gespeichert.

Als nächstes startest du die Kommandozeile und gibst folgende Befehle ein:

Code:
cd \qt-static
build.cmd
configure -debug -static -opensource -opengl desktop
mingw32-make


Das sollte es gewesen sein, wie gesagt nur auf die Pfade achten! Außerdem solltest du dich etwas mit den Optionen für configure befassen, weitere Infos dazu findest du hier: http://doc.qt.io/qt-5/configure-options.html.

Ich antworte später nochmal ob es so bei mir geklappt hat...

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

Benutzerprofil
Anmeldungsdatum: 28.04.2016
Beiträge: 40
Beitrag partsoft Mitglied 18:30:16 05.01.2017   Titel:              Zitieren

Also das hat soweit funktioniert, nur das Modul "qtdeclarative" konnte nicht übersetzt werden. Dafür wird wohl zusätzlich Python benötigt, aber das musst du dann selbst einmal ausprobieren.

Zum Schluss musst du noch in den Einstellungen die neue Qt Version hinzufügen (in meinem Beispiel wäre der Pfad "C:\qt-static\qtbase\bin\qmake.exe") und ein neues Kit mit dieser Version anlegen.

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

Benutzerprofil
Anmeldungsdatum: 28.04.2016
Beiträge: 40
Beitrag partsoft Mitglied 01:17:06 07.01.2017   Titel:              Zitieren

Schade das ich noch kein Feedback von dir habe!? Mir hat das Thema keine Ruhe gelassen, deshalb habe ich jetzt eine virtuelle Maschine mit Python aufgesetzt und kompiliere nochmal. Die Tage schreibe ich dann mal eine genaue Anleitung auf http://www.partsoft.de!

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


Zuletzt bearbeitet von partsoft am 01:18:13 07.01.2017, insgesamt 1-mal bearbeitet
It0101
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.07.2004
Beiträge: 2049
Beitrag It0101 Mitglied 11:27:15 07.01.2017   Titel:              Zitieren

Ich bin gerade an der Sache dran. Ich stelle mich bei sowas immer bissel dummdödelich an, daher dauert das bei mir immer länger :D
picaschaf
Mitglied

Benutzerprofil
Anmeldungsdatum: 30.12.2010
Beiträge: 37
Beitrag picaschaf Mitglied 14:32:12 07.01.2017   Titel:              Zitieren

Bennisen schrieb:
Hast du eine Lizenz? Mit der kostenlosen Version darfst du nicht statisch linken.


Doch, darf er. Qt ist ein OpenSource Projekt das (bis auf wenige Module) ua. unter der L-GPLv2 bzw. L-GPLv3 verfügbar ist. Diese erlaubt kommerzielle Projekte unter bestimmten, einfach einzuhaltenden Bedingungen.

http://www.gnu.org/licenses/lgpl-3.0.html
http://www.gnu.org/licenses/gpl-faq#LGPLStaticVsDynamic

Dennoch raten wir unseren Kunden regelmäßig vom statischen Linken ab, da es außer zusätzlicher Probleme und schwierigeren Anforderungen keinen Vorteil bietet. Schnelleren Startup erhältst du auch zB. mittels Prelinking und wenn es darum geht lediglich ein einzelnes Binary zu haben kannst du UPX Packer zB. nutzen.

_________________
www.bitshift-dynamics.com
It0101
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.07.2004
Beiträge: 2049
Beitrag It0101 Mitglied 18:20:44 07.01.2017   Titel:              Zitieren

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.
picaschaf
Mitglied

Benutzerprofil
Anmeldungsdatum: 30.12.2010
Beiträge: 37
Beitrag picaschaf Mitglied 18: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: 2049
Beitrag It0101 Mitglied 18: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: 28.04.2016
Beiträge: 40
Beitrag partsoft Mitglied 20: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: 37
Beitrag picaschaf Mitglied 20: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: 2049
Beitrag It0101 Mitglied 20: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: 2049
Beitrag It0101 Mitglied 20: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 20:58:36 07.01.2017, insgesamt 1-mal bearbeitet
It0101
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.07.2004
Beiträge: 2049
Beitrag It0101 Mitglied 09: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 09:44:01 08.01.2017, insgesamt 2-mal bearbeitet
It0101
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.07.2004
Beiträge: 2049
Beitrag It0101 Mitglied 11: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 11:33:34 08.01.2017, insgesamt 1-mal bearbeitet
partsoft
Mitglied

Benutzerprofil
Anmeldungsdatum: 28.04.2016
Beiträge: 40
Beitrag partsoft Mitglied 15: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: 610
Beitrag firefly Mitglied 16: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.
It0101
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.07.2004
Beiträge: 2049
Beitrag It0101 Mitglied 07:58:13 19.01.2017   Titel:              Zitieren

@PartSoft: danke! Sieht gut aus!

1.Du könntest als Ergänzung noch diesen Link hinzufügen, wo alle möglichen Optionen für "configure" drin stehen.

http://radekp.github.io/q ....... nfigure-options-qt-1.html

Gerade, wenn man wie ich, SSL benötigt, findet man dort die notwendigen Schalter.


2. Beim Pythoninstaller sollte man darauf hinweisen, dass er nicht vollautomatisch eine "python.exe" erzeugt, die für den QT-Buildprozess notwendig ist. Mein Pythoninstaller hat das erst nach Aufforderung getan. ;-)


Zuletzt bearbeitet von It0101 am 07:59:47 19.01.2017, insgesamt 1-mal bearbeitet
It0101
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.07.2004
Beiträge: 2049
Beitrag It0101 Mitglied 08:01:08 19.01.2017   Titel:              Zitieren

@FireFly: ich habs fast vermutet. Mich wundert schon der etwas umfangreiche Linkeraufruf mit sovielen Bibliotheken, aber vermutlich muss ich damit leben.
partsoft
Mitglied

Benutzerprofil
Anmeldungsdatum: 28.04.2016
Beiträge: 40
Beitrag partsoft Mitglied 01:59:59 21.01.2017   Titel:              Zitieren

It0101 schrieb:
@PartSoft: danke! Sieht gut aus!

1.Du könntest als Ergänzung noch diesen Link hinzufügen, wo alle möglichen Optionen für "configure" drin stehen.

http://radekp.github.io/q ....... nfigure-options-qt-1.html

Gerade, wenn man wie ich, SSL benötigt, findet man dort die notwendigen Schalter.


2. Beim Pythoninstaller sollte man darauf hinweisen, dass er nicht vollautomatisch eine "python.exe" erzeugt, die für den QT-Buildprozess notwendig ist. Mein Pythoninstaller hat das erst nach Aufforderung getan. ;-)


Also bei mir hat die Installation von Python problemlos geklappt, ich habe nur den Pfad geändert! Von daher lasse ich den Artikel so wie er ist, es soll ja auch nur eine grundlegende Anleitung sein.

Ansonsten kannst du natürlich gerne auch selbst etwas dazu schreiben, der Supportbereich ist ein Forum ;)

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

Benutzerprofil
Anmeldungsdatum: 28.04.2016
Beiträge: 40
Beitrag partsoft Mitglied 02:13:38 21.01.2017   Titel:              Zitieren

Zitat:
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.


Meinst du Borland C++ Builder Version 6? Der kam 2002 raus, das Teil ist also schon 15 Jahre alt! Meine Anwendungen mit Borland C++ 3.1 unter DOS waren auch wesentlich kleiner als meine heutigen Qt-Anwendungen ;)

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

Benutzerprofil
Anmeldungsdatum: 06.07.2004
Beiträge: 2049
Beitrag It0101 Mitglied 08:23:24 24.01.2017   Titel:              Zitieren

Ja du hast wohl Recht. Ich hatte nicht bedacht, dass der CBuilder6 ja schon uralt ist. In der kurzen Zeit der Softwareentwicklung sind 15 Jahre ne Menge Holz.

Dennoch stelle ich fest, dass der Trend immer mehr zu "hinklatschen" und nen größeren Speicherriegel / ne größere Platte einbauen geht, anstatt sich Gedanken über effizenze Ressourcennutzung zu machen.


Zuletzt bearbeitet von It0101 am 08:25:03 24.01.2017, insgesamt 1-mal bearbeitet
firefly
Mitglied

Benutzerprofil
Anmeldungsdatum: 03.04.2002
Beiträge: 610
Beitrag firefly Mitglied 09:19:32 24.01.2017   Titel:              Zitieren

It0101 schrieb:
Ja du hast wohl Recht. Ich hatte nicht bedacht, dass der CBuilder6 ja schon uralt ist. In der kurzen Zeit der Softwareentwicklung sind 15 Jahre ne Menge Holz.

Dennoch stelle ich fest, dass der Trend immer mehr zu "hinklatschen" und nen größeren Speicherriegel / ne größere Platte einbauen geht, anstatt sich Gedanken über effizenze Ressourcennutzung zu machen.

Naja hier vergleichst du auch Äpfel mit birnen.
Das Qt Framework bietet deutlich mehr als der CBuilder6 damals bestimmt geboten hat.

Seit Qt5.7 oder erst mit 5.8 kann man Qt modularer bauen, damit man nur die Teile im binary landen, welche auch wirklich nenötigt werden.
https://blog.qt.io/blog/2010/10/26/qt-is-going-modular/

Was eventuell auch helfen könnte wäre dem linker zu nur das zu linken was auch wirklich benötigt wird und den rest nicht mit rein linken.
Beim gcc geht das mit folgender compiler option: -Wl,--as-needed

_________________
Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn.
picaschaf
Mitglied

Benutzerprofil
Anmeldungsdatum: 30.12.2010
Beiträge: 37
Beitrag picaschaf Mitglied 17:23:01 08.02.2017   Titel:              Zitieren

Das ging vor 5.7 und 5.8 seit Qt 4 schon. Nur hat man es nicht marketingmäßig aufgeblasen und ihm einen koolen Namen wie Qt Lite gegeben. Nennt sich qfeatures.txt und ist eines unserer Haus und Hofgeschäfte.
Qt Customizing und Bootstrapping für Embedded Systeme. Wir haben zB. eine Fastboot Demo in der eine einfache Qt Anwendung mit knapp unter 1 MiB (App + Qt + Abhängigkeiten) in rund 500ms startet (von Power On, über boot bis zur benutzbaren Anwendung). Alles kein Thema, nur eine Frage von Aufwand/Nutzen ;)

_________________
www.bitshift-dynamics.com


Zuletzt bearbeitet von picaschaf am 17:23:21 08.02.2017, insgesamt 1-mal bearbeitet
Hi
Unregistrierter




Beitrag Hi Unregistrierter 15:52:47 15.02.2017   Titel:              Zitieren

@picaschaf

Kannst du mir zu den Qt features einen Tipp geben?
Ich möchte einfach ein minimales Qt 5.8 bauen, jedoch scheinen viele features mit anderen zusammenzuhängen und es gibt wohl auch keine Liste, wo die ganzen Abhängigkeiten ganz genau beschrieben sind.
Die in qfeatures.txt sind nämlich nicht komplett, Beispiele:

(wollte deaktivieren : wird benötigt von)

semaphore: sharedmemory
xmlstream/reader/writer: uic
accessibility: error: Project ERROR: Unknown module(s) in QT: accessibility_support-private
sessionmanager: qwindowsbackingstore
pdf/printer/printpreviewwidget/printdialog/printpreviewdialog: plugins\printsupport\windows\main.cpp
texthtmlparser/dom: qttools, setHtml (?)
image_heuristic_mask: qttools
style-windows: qttools

Und das ist bestimmt nur ein kleiner Teil.
picaschaf
Mitglied

Benutzerprofil
Anmeldungsdatum: 30.12.2010
Beiträge: 37
Beitrag picaschaf Mitglied 16:07:35 15.02.2017   Titel:              Zitieren

Was möchtest du denn genau erreichen? Sind dir ein paar kB wirklich der Aufwand wert? Idr. ist die Verwendung von Tools wie UPX Packer einfacher und bringt mehr Einsparungen.
Du wirst schnell Compilerfehler bekommen, da dieser tiefe Eingriff nicht Teil der CI des Qt Project ist. Mit ein Grund warum wir dafür unseren Kunden einen solchen Dienst anbieten.

Wenn du es versuchen möchtest empfehle ich dir das Projekt qttools/src/qconfig/qconfig.pro. Das ist ein GUI in das du die qfeatures.txt lädst, die Festures abwählen die du nicht brauchst, speichern und dem configure mitgeben.

Wenn du wo hängst, einfach nochmal fragen oder mich direkt anschreiben.

_________________
www.bitshift-dynamics.com
Hi
Unregistrierter




Beitrag Hi Unregistrierter 16:51:25 15.02.2017   Titel:              Zitieren

picaschaf schrieb:
Was möchtest du denn genau erreichen? Sind dir ein paar kB wirklich der Aufwand wert?

Hier klingt das aber besser :):
picaschaf schrieb:
... Qt Anwendung mit knapp unter 1 MiB (App + Qt + Abhängigkeiten) ...

Bin außerdem ein bisschen ein unverbesserlicher Mikrooptimierer :rolleyes:

picaschaf schrieb:
Idr. ist die Verwendung von Tools wie UPX Packer einfacher und bringt mehr Einsparungen.

Ganz schlechte Erfahrungen gemacht (AntiVirus-Programme).

picaschaf schrieb:
Wenn du es versuchen möchtest empfehle ich dir das Projekt qttools/src/qconfig/qconfig.pro. Das ist ein GUI in das du die qfeatures.txt lädst, die Festures abwählen die du nicht brauchst, speichern und dem configure mitgeben.

Danke, werd ich mir mal angucken.
picaschaf
Mitglied

Benutzerprofil
Anmeldungsdatum: 30.12.2010
Beiträge: 37
Beitrag picaschaf Mitglied 17:22:34 15.02.2017   Titel:              Zitieren

Ja, das ist aber bitte keine generelle Aussage. Es kommt natürlich immer darauf an was du genau an Modulen nutzt. Verwendest du die webEngine bist du natürlich schnell bei 20-50 MiB, egal was du noch mit den features drehst. Mit denen bekommst du die letzten 100 KiB-ein paar MiB je nach Umfang.
Die Minidemo von uns ist ein einfaches Qt Example das QtCore und QtWidgets nutzt. Der eigentliche Nutzen war das schnelle Booten und hatte einen Zwitaufwand von 2-3 Tagen für die Optimierung. Hast du ein "unpassendes" Problem wie zB. eine Kamera deren Treiber erst initialisiert werden müssen kann sich der Aufwand schnell vervielfachen.

Unverbesserlicher Mikrooptimierer hört sich ja gut und schön an, aber in der Praxis bringt das unweigerlich Probleme. Du verschwendest Zeit, die an anderer Stelle besser aufgehoben wäre obwohl die Anwendung ihre Anforderungen bereits erfüllt, bringst potenzielle Sicherheits- und Absturzrisiken mit rein durch das Herausreißen von Kleinigkeiten die den potentiellen Ärger nicht wert sind und machst die Anwendung schlechter Wart- und Erweiterbar. Wartbarkeit und Erweiterbarkeit stehen nach der Erfüllung der Anforderung über allem.

Bzgl. der Probleme mit den AntiViren Tools würde ich das Problem an der Ursache angehen, nicht am Symptom ;)

_________________
www.bitshift-dynamics.com
C++ Forum :: Andere GUIs - Qt, GTK+, wxWidgets ::  QT - static build   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.