Seite 1 von 3
statisch kompilieren
Verfasst: 5. September 2005 17:07
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...
Verfasst: 5. September 2005 17:14
von kowi1134
Hallo!
Versuch es mal in Deiner qmake Datei mit diesem Eintrag:
Das sollte genügen!
Ciao
Verfasst: 5. September 2005 17:25
von klogg
kowi1134 hat geschrieben:
Versuch es mal in Deiner qmake Datei mit diesem Eintrag:
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...
Verfasst: 5. September 2005 22:24
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.
Verfasst: 6. September 2005 01:33
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.
Verfasst: 6. September 2005 07:37
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.
Verfasst: 6. September 2005 17:13
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.
Verfasst: 6. September 2005 18:17
von BartSimpson
wo iste denn das Probelm die dll's mit zu geben?
Verfasst: 6. September 2005 18:55
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
Verfasst: 6. September 2005 19:00
von BartSimpson
Bei mir hat das 3 stunden gedauert. da das irgnewie nicht mit make -j3 gehen wollte:(
Verfasst: 6. September 2005 22:23
von klogg
OH FEIN!
Das werde ich morgen gleich mal probieren.
Sollte ich eigentlich hinkriegen :-)
Ich werde meine Erfahrungen dann hier posten...
Verfasst: 21. September 2005 19:48
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?
Verfasst: 21. September 2005 19:59
von BartSimpson
Wie die Meldung schon sagt, da biste du auf einen Bug im compiler gestossen. Ein mal mal ein Bugreport an mingw schicken.
Verfasst: 21. September 2005 22:03
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)
Verfasst: 22. September 2005 10:07
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