QT statisch - grosse Datei

Verschiedenes zu Qt
Antworten
billinio
Beiträge: 7
Registriert: 8. Mai 2006 11:53

QT statisch - grosse Datei

Beitrag 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
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag 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.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
billinio
Beiträge: 7
Registriert: 8. Mai 2006 11:53

Beitrag 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!
Saiyaman
Beiträge: 111
Registriert: 20. Mai 2005 13:52

Beitrag 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
billinio
Beiträge: 7
Registriert: 8. Mai 2006 11:53

Beitrag von billinio »

Kann man die MinGw auch statisch linken damit ich am Schluss nur mehr eine exe-Datei (Windows) habe. Wenn ja, wie???
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

Das hatte ich bisher noch nicht hinbekommen. Die minw.dll scheint immer benötigt zu werden.
billinio
Beiträge: 7
Registriert: 8. Mai 2006 11:53

Beitrag von billinio »

und wie schaut es aus wenn ich es mit dem Compiler von VC++ compilieren würde??

LG
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

Da haste denn wieder andere Probleme:(
Aber da kannste es so baueen das wirklich nur eine exe rauskommt.
Nassian
Beiträge: 126
Registriert: 20. Juni 2005 21:14

Beitrag von Nassian »

Gibt es nicht ein Tool, welches ein dynamisch gelinktes Binary nimmt und daraus mit den Libraries (DLL's) ein statisches Binary macht?
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag 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
Saiyaman
Beiträge: 111
Registriert: 20. Mai 2005 13:52

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
billinio
Beiträge: 7
Registriert: 8. Mai 2006 11:53

Beitrag 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
Saiyaman
Beiträge: 111
Registriert: 20. Mai 2005 13:52

Beitrag 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
Antworten