Seite 1 von 1

QT statisch - grosse Datei

Verfasst: 8. Mai 2006 12:01
von billinio
Hallo!

Ich habe QT 4.1.2 OpenSource WIN mit MinGW installiert und QT statisch gelinkt:

configure -static
mingw32-make sub-src

Nun mein Problem: Wenn ich das all bekannte "Hello World" Beispiel kompiliere wird die exe-Datei über 40 MB groß.
Kann mir bitte jemand sagen wie man diese Datei kleiner bekommt??

Danke, LG

Verfasst: 8. Mai 2006 13:36
von BartSimpson
Dan haste schätze ich mal die statische debugversion genommen.
füge mal ganz oben in deine .pro Datei ein:

Code: Alles auswählen

CONFIG -= debug
dann sollte die Datei co um dir 3-6MB haben.

Verfasst: 8. Mai 2006 13:43
von Christian81
Und/Oder man kann noch zusätzliche Debug-Informationen und andere nicht wirklich benötigte Daten mittels 'stripe.exe' entfernen.
Und dann noch mit upx packen.

Verfasst: 8. Mai 2006 15:50
von billinio
Danke für die rasche Hilfe!

Habe jedoch noch ein weiteres Problem. Wenn ich die erstellte Anwendung auf einem Rechner ohne QT und MinGW ausführen will bekomme ich folgende Fehlermeldung:

"Die Anwendung konnte nicht gestartet werden, weil mingwm10.dll nicht gefunden wurde. Neuinstallation der Anwendung könnte das Problem beheben."

Bitte um Eure Hilfe!

Verfasst: 8. Mai 2006 15:51
von Saiyaman
Du musst die MingW-Bibliotheken mitgeben. Die wurden wohl nicht mit statisch gelinkt. Haben die überhaupt was mit Qt zu tun? :)

Die sind normalerweise auch im (QtDi)r/Bin zu finden.

MfG

Verfasst: 8. Mai 2006 15:57
von billinio
Kann man die MinGw auch statisch linken damit ich am Schluss nur mehr eine exe-Datei (Windows) habe. Wenn ja, wie???

Verfasst: 8. Mai 2006 16:01
von BartSimpson
Das hatte ich bisher noch nicht hinbekommen. Die minw.dll scheint immer benötigt zu werden.

Verfasst: 8. Mai 2006 16:15
von billinio
und wie schaut es aus wenn ich es mit dem Compiler von VC++ compilieren würde??

LG

Verfasst: 8. Mai 2006 16:59
von BartSimpson
Da haste denn wieder andere Probleme:(
Aber da kannste es so baueen das wirklich nur eine exe rauskommt.

Verfasst: 8. Mai 2006 18:06
von Nassian
Gibt es nicht ein Tool, welches ein dynamisch gelinktes Binary nimmt und daraus mit den Libraries (DLL's) ein statisches Binary macht?

Verfasst: 8. Mai 2006 18:17
von BartSimpson
schau mir mal den quellcode von openSSL an
da machen die sowas. Dort wird nur eine lib gebaut unddarus sowohl die statische als auch dir dynamische erzeugt. ich glaube die nutzen das mingw toll dllwrapper

Verfasst: 9. Mai 2006 08:46
von Saiyaman
billinio hat geschrieben:Kann man die MinGw auch statisch linken damit ich am Schluss nur mehr eine exe-Datei (Windows) habe. Wenn ja, wie???
Es ist doch gut möglich, dass, wenn du MinGW installierst, statische Libs dabei sind. Ich hab aber noch nicht näher geschaut. Ich halte das statische Linken für keine gute Idee. Wenn du dein Programm aktualisierst, musst du so Zeug immer mitgeben, was sich überhaupt nicht geändert hat. Die DLLs können doch brav im Anwendungspfad liegen oder nicht?

MfG

Verfasst: 9. Mai 2006 08:55
von Christian81
Saiyaman hat geschrieben:
billinio hat geschrieben:Kann man die MinGw auch statisch linken damit ich am Schluss nur mehr eine exe-Datei (Windows) habe. Wenn ja, wie???
Es ist doch gut möglich, dass, wenn du MinGW installierst, statische Libs dabei sind. Ich hab aber noch nicht näher geschaut. Ich halte das statische Linken für keine gute Idee. Wenn du dein Programm aktualisierst, musst du so Zeug immer mitgeben, was sich überhaupt nicht geändert hat. Die DLLs können doch brav im Anwendungspfad liegen oder nicht?

MfG
Und vor allem die ach so grosse mingwm10.dll (16K !!!!)
Bei den Qt-Dlls verstehe ich es ja noch einigermassen (obwohl heutzutage auch das kein Problem mehr darstellen sollte, vor allem wenn man beim Update nicht immer die Dlls auch noch mitgibt), aber bei einer 16KB grossen Datei? Ich weiss nicht...

Verfasst: 9. Mai 2006 09:38
von billinio
Saiyaman hat geschrieben:
billinio hat geschrieben:Kann man die MinGw auch statisch linken damit ich am Schluss nur mehr eine exe-Datei (Windows) habe. Wenn ja, wie???
Es ist doch gut möglich, dass, wenn du MinGW installierst, statische Libs dabei sind. Ich hab aber noch nicht näher geschaut. Ich halte das statische Linken für keine gute Idee. Wenn du dein Programm aktualisierst, musst du so Zeug immer mitgeben, was sich überhaupt nicht geändert hat. Die DLLs können doch brav im Anwendungspfad liegen oder nicht?

MfG
Es ist ein Tool was man vom Internet herunterladen kann und nicht installiert werden muss.
Gibt es vielleicht noch andere möglichkeiten alle benötigten dlls in eine kompakte exe datei zu stopfen.
allerdings sollte das tool später auch auf anderen plattformen wie MAC und LINUX lauffähig sein und auch nur aus einer datei bestehen.

mfg

Verfasst: 9. Mai 2006 15:33
von Saiyaman
Gerade in diesem Fall sollte das Hauptprogramm so klein wie möglich sein, findest du nicht? Die DLLs werden sich doch nicht mehr ändern. Das hat auch nix damit zu tun, ob etwas installiert wird oder nicht.

MfG