Forum: PC-Programmierung QT wie linke ich static?


von Andi (Gast)


Lesenswert?

Hallo zusammen,

Ich arbeite mich im Moment in QT ein, funktioniert auch ganz gut soweit.

Nun versuche ich momentan mein Programm static zu linken, dh ich will 
keine extenen dll's verwenden (die qtguid4.dll hat schon ~ 150Mb), 
schaff es aber nicht.
Ich habe schon diverse Anleitungen versucht aber bin nicht weiter 
gekommen, kann mir jemand von euch weiter helfen ?

Ich verwende das QT SDK 1.1.1 für Windows mit QTCreator und QTSource 
4.7.3

Weiß jemand die es in Zukunft mit QT Lizenzen aussieht? Nokia hat ja QT 
abgegeben, bleibt in der hinsicht alles wie es war ?


Grüße
Andi

: Verschoben durch User
von Rolf Magnus (Gast)


Lesenswert?

Andi schrieb:
> Nun versuche ich momentan mein Programm static zu linken, dh ich will
> keine extenen dll's verwenden (die qtguid4.dll hat schon ~ 150Mb),

Das ist die Debug-Version. Nimm doch die ohne d am Schluß. Die macht das 
selbe, aber ohne Debug-Symbole.

> schaff es aber nicht.
> Ich habe schon diverse Anleitungen versucht aber bin nicht weiter
> gekommen, kann mir jemand von euch weiter helfen ?

Um Qt statisch zu linken, brauchst du erstmal eine statische Version von 
Qt. Ob die aktuell dabei ist, weiß ich nicht. Falls nicht, wirst du dir 
eine statische Qt selbst bauen müssen.

> Weiß jemand die es in Zukunft mit QT Lizenzen aussieht? Nokia hat ja QT
> abgegeben, bleibt in der hinsicht alles wie es war ?

Bisher hat sich da wohl nix geändert. Ob überhaupt schon jemand wirklich 
weiß, was der Käufer damit vor hat? Viel wird sich aber nicht ändern 
können, denn für eine Lizenzänderung müßte man vorher von jedem 
Entwickler die Erlaubnis einholen, auch von denen, die z.B. 
nichttriviale Patches eingeführt haben. Außerdem kann man nicht 
nachträglich die Lizenz schon veröffentlichter Versionen ändern. Es 
könnte sich also höchtens für nachfolgende Versionen was ändern.

PS: Beachte auch, daß du bei Verwendung der LGPL dein Programm nur dann 
closed-source machen darfst, wenn du nicht statisch linkst!

von ole (Gast)


Lesenswert?

Andi schrieb:
> Weiß jemand die es in Zukunft mit QT Lizenzen aussieht? Nokia hat ja QT
> abgegeben, bleibt in der hinsicht alles wie es war ?
Lediglich der Vertrieb wurde abgegeben.

von Εrnst B. (ernst)


Lesenswert?

Andi schrieb:
> Nun versuche ich momentan mein Programm static zu linken

Geht im Prinzip, ABER: du darfst die QT dann nicht mehr "einfach so" mit 
Nicht-OpenSource-Software linken.

d.H. entweder du linkst dynamisch gegen die DLL, dann kann deine 
Software lizensiert sein wie sie will,

oder

du linkst statisch und bietest den Sourcecode z.B. unter GPL mit an.

oder

du linkst statisch, und bietest zumindest die vorkompilierten 
Object-Files deines Programmes mit an.

oder

du kaufst dir eine entsprechende QT-Lizenz. (ggfs. mit Zeitreise, die 
hättest du dir eigentlich schon vor Beginn der Implementierung kaufen 
müssen)


Sinn bei der (L)GPL lizensierten QT ist immmer: Der Endanwender muss 
die Möglichkeit behalten, dein Programm mit einer modifizierten 
QT-Version laufen zu lassen. Also entweder DLL austauschen können oder 
gegen geänderte QT-Version statisch linken können.

von Martin J. (bluematrix) Benutzerseite


Lesenswert?

hallo,

nochmal für mich zum mit schreiben ;-).

Ich habe ein programm in Qt geschrieben mit der freien Version 4.7x
Der Sourcecode soll nicht veröffentlicht werden.

So wie ich dass verstanden habe kann ich meine Software verkaufen, auch 
wenn ich keine Qt Lizenz gekauft habe. Ich darf aber die einzelnen Qt 
dlls nur statisch linken.

Ist das so richtig oder muss ich noch etwas beachten?

Warum erstellt man so eine Lizenz, denn die Meisten Programme linken ja 
nur dynamisch? Somit ist ja fast keiner dazu gezwungen sich eine Lizenz 
zu kaufen.

Danke

von Martin J. (Gast)


Lesenswert?

sorry ... schreibfehler

Martin J. schrieb:
> So wie ich dass verstanden habe kann ich meine Software verkaufen, auch
> wenn ich keine Qt Lizenz gekauft habe. Ich darf aber die einzelnen Qt
> dlls nur statisch linken.

--> Ich darf aber die einzelnen Qt dlls nur dynamisch linken.

von Rolf Magnus (Gast)


Lesenswert?

Martin J. schrieb:

> Ist das so richtig oder muss ich noch etwas beachten?

Im Prinzip ja.

> Warum erstellt man so eine Lizenz, denn die Meisten Programme linken ja
> nur dynamisch?

Das dynamische Linken hat einen anderen Hintergrund. Die LGPL sieht vor, 
daß man LGPL-Komponenten austauschen können muß. Bei einem dynamisch 
gelinkten Programm geht das einfach durch Ersetzen der DLL. Statisches 
Linken wäre im Prinzip auch erlaubt, wenn es eine einfache Möglichkeit 
gäbe, die LGPL-Teile auszutauschen. Aber in der Regel ist das eben nicht 
der Fall.

> Somit ist ja fast keiner dazu gezwungen sich eine Lizenz zu kaufen.

Früher war Qt unter GPL und QPL. Erst später kam dann die LGPL und eine 
nichtkommerzielle Windows-Version. Die Hintergründe dieser 
Umlizenzierung kenne ich aber auch nicht. Prinzipell muß man sich eine 
Lizenz kaufen, wenn man professionellen Support will oder wenn man Qt 
selbst ändern möchte, ohne die Änderungen unter LGPL veröffentlichen zu 
müssen. Oder eben wenn man statisch linken möchte.

von Karl H. (kbuchegg)


Lesenswert?

Martin J. schrieb:

> Ich habe ein programm in Qt geschrieben mit der freien Version 4.7x
> Der Sourcecode soll nicht veröffentlicht werden.

Musst du auch nicht.
Dein Benutzer muss nur in der Lage sein, sich mit neueren Qt Versionen 
sich seine Applikation theoretisch neu zu bauen. Dazu braucht er den 
Source Code nicht, wohl aber die Objekt Files.

Allerdings ist das alles mehr theoretischer Natur. Die wenigsten 
Anwender können mit dem Begriff 'Linken' überhaupt irgendetwas anfangen 
und werden sich hüten, da irgendetwas zu tun. Wenn da was nicht 
funktioniert, kriegst du das als Fehlermeldung auf den Tisch. Wenn du 
deine Objekt-Files also irgendwo (Web?, CD?, auf Anfrage?) zur Verfügung 
stellst, müsste das die Anforderungen der LGPL schon erfüllen. Sinn der 
LGPL ist es ja nicht, dass du nichts mehr verkaufen kannst ohne gleich 
die Hosen komplett runterlassen zu müssen. Und statisches Linken hat 
auch so seine Vorteile für den Benutzer. Eben weil alles in einem EXE 
ist.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.