statisch kompilieren
statisch kompilieren
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...
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...
Hallo!
Versuch es mal in Deiner qmake Datei mit diesem Eintrag:
Das sollte genügen!
Ciao
Versuch es mal in Deiner qmake Datei mit diesem Eintrag:
Code: Alles auswählen
CONFIG += qtCiao
Welche "qmake Datei" ist gemeint?kowi1134 hat geschrieben:
Versuch es mal in Deiner qmake Datei mit diesem Eintrag:Das sollte genügen!Code: Alles auswählen
CONFIG += qt
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:
Hallo,
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.
sind bei der normalen windows-GPL Version nicht vielleicht die ststischen libs dabei?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.
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.
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.BeS hat geschrieben:sind bei der normalen windows-GPL Version nicht vielleicht die ststischen libs dabei?
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.
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.
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:
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
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:
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?
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:
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
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