2010-02-16 10 views
10

Ich weiß nicht viel über die LGPL/GPL, wenn es darum geht, Programme zu verteilen (ohne eine Qt-Lizenz); Wenn ich ein Programm gemacht, konnte ich statisch die Bibliotheken auf die exe verbinden, damit ich eine einzelne Datei zu verteilen, wenn:Qt einzelne EXE mit LGPL?

  • Das Programm kostet nichts, es ist nur verteilt werden (Closed Source oder Open Source) ?

  • Wenn Sie für das Programm bezahlen müssen, können Sie noch statisch verknüpfen?

Antwort

12

Nein, wenn Ihr Programm ist Closed-Source und Sie wollen gegen die LGPL-Version von Qt verknüpfen Sie dynamische Verknüpfung verwenden. Wenn Sie statisch verknüpfen möchten, müssen Sie eine Lizenz für Qt kaufen.

Um LGPL-Code in Ihrem geschlossenen Quellprojekt zu verwenden, muss der Benutzer den lgpl-Teil des Codes ersetzen können. Der einfachste und bei weitem gebräuchlichste Weg, dies zu tun, besteht darin, den gesamten LGPL-Code in eine DLL zu schreiben, und dann kann der Benutzer die DLL ersetzen, wenn er sie wählt.

Sie dürfen auch alle technischen Mittel verwenden, die Ihre Sprache erlaubt, um das gleiche Ziel zu erreichen. Sie können Objektdateien verteilen und der Benutzer kann dann erneut verlinken, wie ein anderer Kommentator darauf hinwies, aber ich habe das nie in der Praxis gesehen.

Es spielt keine Rolle, ob Ihr Produkt kostenlos ist oder nicht. Sie können GPL/LGPL-Produkte verkaufen.

+0

Oh gut. Danke für die Antwort. – PythonGem

+5

Sie können die statische Verknüpfung verwenden, wenn Sie auch Objektcode verteilen. –

+2

Lesen Sie die LGPL Version 2.1 Abschnitt 6. Diese Antwort ist falsch. – Kevin

27

Eigentlich erlaubt die LGPL statische Verbindungen, solange Sie ein paar sehr spezifische Anforderungen erfüllen. Wenn zum Beispiel aller Verteilung von Ihrer Website durchgeführt wird, wo man StaticProgram.exe, du ist in Ordnung, solange die Benutzer auch StaticProgram.obj und LGPL-Bibliothek-source.tar.gz herunterladen können. Sie können auch StaticProgram.exe mit einem schriftlichen Angebot verteilen, um die anderen Dateien bereitzustellen.

Insbesondere statische Verknüpfung einer einzigen ausführbaren erzeugt, der ein Derivat des LGPL-Code ist, so muss man mit Abschnitt 6 des LGPL erfüllen:

6) Als Ausnahme zu den obigen Abschnitten, können Sie kombinieren oder auch einen Link ein „Werk, das die Bibliothek nutzt“ mit der Bibliothek ein Werk enthält Teile der Bibliothek zu erzeugen, und diese unter Bedingungen von Ihrer Wahl verteilen, vorausgesetzt, dass die Bedingungen Genehmigung Änderung der Arbeit für die eigene Verwendung des Kunden und umgekehrt Engineering für das Debuggen solcher Modifikationen.

Sie müssen deutlich erkennbar angeben, mit jede Kopie der Arbeit, die die Bibliothek darin verwendet wird und dass die Bibliothek und seine Verwendung durch diese Lizenz abgedeckt sind. Sie müssen eine Kopie dieser Lizenz bereitstellen. Wenn die Arbeit während der Ausführung Copyright-Hinweise anzeigt, müssen Sie den Copyright-Hinweis für die -Bibliothek darunter enthalten, sowie eine Referenz, die den Benutzer auf die Kopie dieser Lizenz verweist.Außerdem müssen Sie eines dieser Dinge tun: Begleitet

a) die Arbeit mit dem kompletten entsprechenden maschinenlesbaren Quellcode für die Bibliothek einschließlich allen Änderungen in der Arbeit verwendet wurden (die verteilt sein muß, unter Abschnitte 1 und 2 oben); und, wenn die Arbeit ein ausführbare mit der Bibliothek verbunden ist, mit dem kompletten maschinenlesbaren „Werk, das die Bibliothek nutzt“, wie Objektcode und/oder Source-Code, so , dass der Benutzer die Bibliothek verändern kann und dann erneut verknüpfen, um eine modifizierte ausführbare Datei zu erzeugen, die die modifizierte Bibliothek enthält. (Es versteht sich, dass die Benutzer, der den Inhalt der Definitionsdateien in der Bibliothek verändert wird nicht unbedingt in der Lage sein die Anwendung neu kompilieren, um die modifizierten Definitionen zu verwenden.)

b) Verwenden Sie einen geeigneten Shared Library-Mechanismus zum Verknüpfen mit der Bibliothek. Ein geeigneter Mechanismus ist ein , die (1) zur Laufzeit, anstatt Kopieren Bibliotheksfunktionen in die ausführbaren eine Kopie die Bibliothek bereits auf dem Benutzer-Computersystem verwendet wird, und (2) wird ordnungsgemäß mit einem betreiben modifizierte Version von die Bibliothek, wenn der Benutzer einen installiert, solange die modifizierte Version ist schnittstellenkompatibel mit der Version , dass die Arbeit mit gemacht wurde.

c) das Werk zusammen mit einem schriftlichen Angebote, gültig für mindestens drei Jahre demselben Benutzer der Materialien in Abschnitt 6a angegeben zu geben, oben, für eine Gebühr nicht mehr als die Kosten dies der Durchführung Verteilung.

d) Wenn die Verteilung der Arbeit, indem sie den Zugriff gemacht wird von einem bestimmten Ort zu kopieren, zu bieten gleichwertigen Zugang die oben angegebenen Materialien aus dem gleichen Ort zu kopieren. e) Vergewissern Sie sich, dass der Benutzer bereits eine Kopie dieser Materialien erhalten hat oder dass Sie bereits diesem Benutzer eine Kopie gesendet haben.

Für ein ausführbares Programm der erforderliche Form des „Werkes, das die Bibliothek nutzt“ alle Daten und Hilfs Programme für die Wiedergabe der ausführbare Datei von ihm benötigen enthalten muss. Jedoch als besondere Ausnahme zu den Materialien sein müssen nichts umfassen verteilt, dass üblicherweise (in entweder Quelle oder binärer Form) mit den Hauptkomponenten (Kernel, Compiler usw.) des Betriebs System auf , die die ausführbare Datei ausgeführt wird, es sei denn, dass Komponente selbst die ausführbare Datei begleitet.

Es kann vorkommen, dass diese Anforderung die Lizenzbeschränkungen anderer proprietärer Bibliotheken steht, normalerweise nicht begleiten den Betrieb System tun.Ein solcher Widerspruch bedeutet, dass Sie nicht beide zusammen verwenden können und die Bibliothek zusammen in einer ausführbaren Datei, die Sie verteilen.

Verwandte Themen