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
Antwort schreiben
Benutzername:
Titel:
Nachrichtentext:
  :)  :D  ;)  :(  :p  :mad:  :rolleyes:  :eek:  :confused:  :cool:  :o)  :leak:  :live:  :die:  :idea:  :arrow:  :warning: 
                             
                         
         
           
                             
                             
                             
             


BBCode in diesem Beitrag deaktivieren [BBCode]
Smilies in diesem Beitrag deaktivieren
QT - static build and 340877
     


Themen-Überblick 
(Aktualisieren)
Autor Nachricht
firefly
08: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
It0101
07: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.
partsoft
01: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 ;)
partsoft
00: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 ;)
It0101
07: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.
It0101
06: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. ;-)
firefly
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
partsoft
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
It0101
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?
It0101
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 ;-)

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.