statisch kompilieren

Alles rund um die Programmierung mit Qt
klogg
Beiträge: 129
Registriert: 5. September 2005 17:00
Wohnort: Hann. Münden

statisch kompilieren

Beitrag von klogg »

Ich programmieren unter Windows mit QT 4.0.1.

Mittels des "Qt 4.0.1 Command Prompt" (so eine Dos-Box)
kompiliere ich mein Programm mit
"qmake -project"
"qmake"
"make"
funktioniert auch prima!

Wenn ich das Programm aber auf einen anderen Rechner kopiere,
der kein QT und kein MinGW (das braucht man ja...) drauf hat,
dann kommt beim Starten eine Fehlermeldung,
dass er irgendeine .dll Datei nicht finden kann.
Ich möchte dieses Problem gerne dadurch umgehen,
dass ich alle nötigen Datein in die .exe mit reinkompiliere.
"statisch kompilieren" nennt man das, oder?

Meine Frage: Wie?

Was muss ich (im Makefile?) ändern, damit das Programm auf
anderen Windows-Rechner ohne QT läuft?

Danke für eure Hilfe...
kowi1134
Beiträge: 120
Registriert: 1. Mai 2005 17:48
Wohnort: Arnsberg

Beitrag von kowi1134 »

Hallo!

Versuch es mal in Deiner qmake Datei mit diesem Eintrag:

Code: Alles auswählen

CONFIG += qt
Das sollte genügen!

Ciao
klogg
Beiträge: 129
Registriert: 5. September 2005 17:00
Wohnort: Hann. Münden

Beitrag von klogg »

kowi1134 hat geschrieben:
Versuch es mal in Deiner qmake Datei mit diesem Eintrag:

Code: Alles auswählen

CONFIG += qt
Das sollte genügen!
Welche "qmake Datei" ist gemeint?
In dem Ordner, in dem auch der ganze Quellcode und so ist,
gibt es keine Datei mit dem Namen "qmake".
Da gibt es eine .pro Datei und z.B. ein Makefile.
Soll ich das da irgendwo eintragen?

tut mir leid, ich kenn mich noch nicht so aus...
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

1. benötigste du eine statsiche Version von Qt. Die du denn statisch linken kannst. Dazu muste du die Qt Bibliothke neu bauen.
BeS
Beiträge: 28
Registriert: 10. Januar 2005 15:01

Beitrag von BeS »

Hallo,
BartSimpson hat geschrieben:1. benötigste du eine statsiche Version von Qt. Die du denn statisch linken kannst. Dazu muste du die Qt Bibliothke neu bauen.
sind bei der normalen windows-GPL Version nicht vielleicht die ststischen libs dabei?
Ich finde die Frage auch sehr interessant. Unter GNU oder BSD Systeme ist es ja kein Problem, da kennt jeder Qt und hat es schnell installiert. Aber bei Windows- und auch MacOS-Systemen wäre es durchaus interessant, wenn man einfach das ganze in eine große exe kompilieren könnte die man dann auf verschiedenen PCs ausführen kann.

Ich habe leider zur Zeit kein windows zur Hand, wenn sich damit also jemand auskennt oder es ausprobieren könnte wie "einfach" sowas geht würde mich das auch interessieren. Bisher gibt es in diesem Thread ja keine eindeutige Aussagen dazu.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

BeS hat geschrieben:sind bei der normalen windows-GPL Version nicht vielleicht die ststischen libs dabei?
Man muß auf jeden Fall Qt entsprechend erstellt haben, siehe configure-Optionen -static bzw. -shared. Man könnte natürlich auch einfach die benötigten DLLs ins Programmverzeichnis (Win) oder die Libs ins Paket (Mac) packen.

Statisch kompilierte Qt Programme können aber in gemischten Umgebungen kollidieren, also statische und gesharete Programme mögen sich nicht. Gibt wohl Probleme mit den Signalen.
klogg
Beiträge: 129
Registriert: 5. September 2005 17:00
Wohnort: Hann. Münden

Beitrag von klogg »

Hmm...
Das hört sich so an, als ginge das nicht so einfach.
QT habe ich ja garnicht erstellt,
ich hab's einfach nur runtergeladen
"qt-win-opensource-4.0.1-mingw.exe"
und dann installiert.
Dann habe ich noch MinGW installiert, zum kompilieren.

So wie ich das jetzt hier alles verstehe,
bleibt es wohl vorerst dabei, dass auch auf jedem anderen Rechner
diese Sachen installiert sein müssen, damit mein QT-Programme
da laufen. Schade.

Falls jemand noch eine einfachere Lösung kennt,
dann kann er die ja hier mal kund tun.

Ansonsten vielen Dank für eure Antworten.
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

wo iste denn das Probelm die dll's mit zu geben?
john
Beiträge: 110
Registriert: 14. August 2004 20:55
Wohnort: München

Beitrag von john »

lade dir doch einfach die Sourcen von QT runter.
http://wftp.tu-chemnitz.de/pub/Qt/qt/so ... -4.0.1.zip
Dann kannst du es dir mit "-static" beim ausführen von configure.exe dementsprechend übersetzen. -dauert halt mit MinGW ein paar Tage, wenn du keine 2GB-Ram hast... ;-)

Danach kannst du Dir dein Programm neu übersetzen und es benötigt die fette QT-Dll nicht mehr.

Gruß john
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

Bei mir hat das 3 stunden gedauert. da das irgnewie nicht mit make -j3 gehen wollte:(
klogg
Beiträge: 129
Registriert: 5. September 2005 17:00
Wohnort: Hann. Münden

Beitrag von klogg »

OH FEIN!

Das werde ich morgen gleich mal probieren.
Sollte ich eigentlich hinkriegen :-)

Ich werde meine Erfahrungen dann hier posten...
klogg
Beiträge: 129
Registriert: 5. September 2005 17:00
Wohnort: Hann. Münden

Beitrag von klogg »

So.
Nach einem Umzug und ein wenig dies und das
geht es nun weiter in der Sache.
Wenn ich versuche, QT mit "configure -static" und danach "make"
zu erstellen, läuft er so zwei Stunden und dann kommt
folgende Fehlermeldung:

(tausend warnings kommen die ganze Zeit, aber hier bricht er ab)





uilib\ui4.cpp: In destructor `DomLayoutDefault::~DomLayoutDefault()':
uilib\ui4.cpp:1594: internal compiler error: in rest_of_handle_final, at toplev.c:2064
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.mingw.org/bugs.shtml> for instructions.
mingw32-make[5]: *** [tmp\obj\release_static\ui4.o] Error 1
mingw32-make[5]: Leaving directory `C:/Qt/4.0.1/tools/designer/src/lib'
mingw32-make[4]: *** [release] Error 2
mingw32-make[4]: Leaving directory `C:/Qt/4.0.1/tools/designer/src/lib'
mingw32-make[3]: *** [sub-lib-make_default-ordered] Error 2
mingw32-make[3]: Leaving directory `C:/Qt/4.0.1/tools/designer/src'
mingw32-make[2]: *** [sub-src-make_default-ordered] Error 2
mingw32-make[2]: Leaving directory `C:/Qt/4.0.1/tools/designer'
mingw32-make[1]: *** [sub-designer-make_default-ordered] Error 2
mingw32-make[1]: Leaving directory `C:/Qt/4.0.1/tools'
mingw32-make: *** [sub-tools-make_default-ordered] Error 2

C:\Qt\4.0.1>





Ist das jetzt meine Schuld?
Sieht eigentlich nicht so aus. Passiert übrigens jedes mal...

Wer weiß was?
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

Wie die Meldung schon sagt, da biste du auf einen Bug im compiler gestossen. Ein mal mal ein Bugreport an mingw schicken.
AHUser
Beiträge: 27
Registriert: 29. Juni 2005 17:45

Beitrag von AHUser »

klogg hat geschrieben:läuft er so zwei Stunden
Um Gottes Willen. Gut das es noch msvc (33 min) und bcc32 (16 min) gibt. (auf P4 3GHz)
Andreas
klogg
Beiträge: 129
Registriert: 5. September 2005 17:00
Wohnort: Hann. Münden

Beitrag von klogg »

Haben denn auch andere dieses Problem?
Ich hab gelesen, dass man die OpenSource Version
nur mit dem MinGW-Compiler kompilieren kann.
Wenn der jetzt aber einen Bug hat, dann...
Ich möchte doch so gerne endlich statisch kompilierte Programme :?

Das kann doch nicht so ein ausgefallener Wunsch sein, oder?

HENNING
Antworten