Ich wollte mal fragen, wie ich das jetzt am besten gestalte:
Ich habe ein Programm auf Linux geschrieben, welches Qt4 benutzt.
Da mich viele Leute nach einer Windows-Version gefragt haben, ich aber kein Windows habe, habe ich das Programm erfolgreich mit einem Crosscompiler kompiliert.
Nun die Frage: Ich will den WIndows-usern nicht zumuten, den 70-MB-grossen Qt-Installer herunterzuladen, um dann noch weitere 200 MB zu installieren. Deshalb habe ich überlegt, dass ich die Qt-Libs lieber mitliefere. Das Problem daran ist, dass ich viele andere Qt-Programme geschrieben habe und jedes einzelne folglich die Qt-Libs mitliefern muss.
Da das ziemlich verschwenderisch gegenüber dem Plattenplatz ist: Gibt es eine einfache Möglichkeit, wirklich nur die Qt-Runtime auf Windows so zu installieren, dass jedes Programm möglichst einfach diese Libraries nutzen kann?
Leider finde ich nur Qt-Installer bei Trolltech, die noch den Sourcecode und die Dokumentation mitliefern, doch die werden ja nicht gebraucht von der Runtime...
Handling der Qt-Libs
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
naja, aber unter Linux wird drauf geachtet, dass die Bibliotheken an einem einheitlichen Platz liegen. Okay, da wird das durch das Packetmanagement ueberwacht/festgelegt, aber ich denke wenn die Anbieter von Windows-Software von Anfang an in ihren Installern da ein wenig aufgepasst haetten waere es nicht so dass heute beinahe jedes Programm seine libs immer mitliefert und im Programmordner ablegt, was ja letztendlich nicht unerheblich Platz kosten kann.
so, gn8, morgen is abi
so, gn8, morgen is abi
Das Problem liegt eigentlich noch viel tiefer.
Linux hat nen systemcompiler .... man kann also davon ausgehen, das das gesamte system mit einem compiler und meist sogar mit den selben flags uebersetzt wurden.
Unter windwos kann man mehrere compiler einsetzen und man hatt dann dementsprechend mehrere runtimes ...
Nun ist aber das generieren der linkersymbole fuer klassennamen sowie die ausrichtung der C++ klassen am Speicher nicht standardisiert. Das kann eigentlich jeder compiler machen wie er moechte ... also sind dll's die klassen exportieren nur binaerkompatibel zu Programmen die mit dem selben compiler uebersetzt wurden ....
Haben wir hier auch schmerzhaft erfahren muessen
Wir haben unsere Programme gegen die Qt uebersetzt und per installationsroutine die qtlibs (waren im namen ja versioniert) ins system 32 gespoolt. Gab ja sogar mal nen CLient setup programm was von trolltech kam ^^ wo eben die qtlibs ins system 32 gespoolt wurden. Aehnlich wie von MS das VS redistributable Pack.
Alles toll, bis nen anderer Anbieter auf die selbe idee kam, nur das der statt dem MS compiler den mingw verwendet hatte ....
Sein setup hat schoen unsere qtlibs ueberschrieben, sein programm lief super, bei uns kamen die segmentation faults ... und wir hatten den aerger mit der fehlersuche.
Fazit:
Bei allem wo ned sicher bist das nur c schnittstellen exportiert werden, vergiss die Idee mit zentraler ablage und leg sie lieber neben die .exe
Von Trolltech gibts auch kein programm mehr, was die qtlibs an ne zentrale stelle schiebt .... ^^
Ciao ....
Linux hat nen systemcompiler .... man kann also davon ausgehen, das das gesamte system mit einem compiler und meist sogar mit den selben flags uebersetzt wurden.
Unter windwos kann man mehrere compiler einsetzen und man hatt dann dementsprechend mehrere runtimes ...
Nun ist aber das generieren der linkersymbole fuer klassennamen sowie die ausrichtung der C++ klassen am Speicher nicht standardisiert. Das kann eigentlich jeder compiler machen wie er moechte ... also sind dll's die klassen exportieren nur binaerkompatibel zu Programmen die mit dem selben compiler uebersetzt wurden ....
Haben wir hier auch schmerzhaft erfahren muessen
Wir haben unsere Programme gegen die Qt uebersetzt und per installationsroutine die qtlibs (waren im namen ja versioniert) ins system 32 gespoolt. Gab ja sogar mal nen CLient setup programm was von trolltech kam ^^ wo eben die qtlibs ins system 32 gespoolt wurden. Aehnlich wie von MS das VS redistributable Pack.
Alles toll, bis nen anderer Anbieter auf die selbe idee kam, nur das der statt dem MS compiler den mingw verwendet hatte ....
Sein setup hat schoen unsere qtlibs ueberschrieben, sein programm lief super, bei uns kamen die segmentation faults ... und wir hatten den aerger mit der fehlersuche.
Fazit:
Bei allem wo ned sicher bist das nur c schnittstellen exportiert werden, vergiss die Idee mit zentraler ablage und leg sie lieber neben die .exe
Von Trolltech gibts auch kein programm mehr, was die qtlibs an ne zentrale stelle schiebt .... ^^
Ciao ....