2010-02-16 11 views
10

Nie wiem zbyt wiele na temat LGPL/GPL, jeśli chodzi o dystrybucję programów (bez licencji Qt); Jeśli zrobiłem program, mogę statycznie powiązać biblioteki do exe więc mam jeden plik do dystrybucji, gdy:Qt pojedynczy EXE z LGPL?

  • Program niczego nie kosztuje, to po prostu są rozłożone (closed source lub open source) ?

  • Gdy musisz zapłacić za program, czy nadal możesz statycznie linkować?

Odpowiedz

12

Nie, jeśli twój program jest zamknięty źródło i chcesz linkować do wersji LGPL Qt, musisz użyć dynamicznego linkowania. Jeśli chcesz statycznie powiązać, musisz kupić licencję na Qt.

Aby użyć kodu LGPL w projekcie zamkniętym, użytkownik musi mieć możliwość zastąpienia części kodu lgpl. Najłatwiejszym i zdecydowanie najczęstszym sposobem na to jest umieszczenie całego kodu LGPL w bibliotece dll, a następnie użytkownik może zamienić bibliotekę DLL, jeśli taka będzie.

Masz również prawo używać wszelkich środków technicznych, jakie twój język pozwala osiągnąć ten sam cel. Możesz rozprowadzać pliki obiektów, a następnie użytkownik może się ponownie połączyć, jak zauważył inny komentator, ale nigdy nie widziałem, aby tak się działo w praktyce.

Nie ma znaczenia, czy produkt jest darmowy, czy płatny. Możesz sprzedawać produkty GPL/LGPL.

+0

No cóż. Dziękuję za odpowiedź. – PythonGem

+5

Możesz użyć linku statycznego, jeśli rozpowszechniasz również kod obiektowy. –

+2

Przeczytaj LGPL wersja 2.1 sekcja 6. Ta odpowiedź jest niepoprawna. – Kevin

27

W rzeczywistości LGPL pozwala na łączenie statyczne, o ile spełnisz kilka bardzo konkretnych wymagań. Na przykład, jeśli wszystkie dystrybucja odbywa się od swojej stronie, gdzie trzeba StaticProgram.exe, jesteś w porządku tak długo, jak użytkownicy mogą również pobrać StaticProgram.obj i LGPL-Library source.tar.gz. Możesz również rozpowszechniać StaticProgram.exe z pisemną ofertą dostarczenia innych plików.

szczególności powiązanie statyczna tworzy pojedynczy plik wykonywalny, który jest pochodną LGPL, więc musi być zgodna z sekcją 6 licencji:

6), wyjątek do sekcji powyżej, może również połączyć lub powiązać „pracy, która wykorzystuje Bibliotekę” z Biblioteki produkować pracę zawierającą części Biblioteki i dystrybuować tę pracę pod względem wyboru, pod warunkiem że chodzi modyfikacja pozwolenie na pracę za na własny użytek klienta i odwrotnie inżynieria do debugowania takich modyfikacji .

Musisz dać widoczne na każdy egzemplarz pracy, że Biblioteka używanej w nim i że Biblioteka i jego stosowanie są objęte niniejszą Licencją. Należy dostarczyć kopię tej licencji . Jeśli podczas wykonywania pracy wyświetli się informacja o prawach autorskich, należy podać informację o prawach autorskich do Biblioteki , a także odwołanie kierujące użytkownika do kopii tej Licencji .Ponadto, należy wykonaj jedną z tych rzeczy:

a) Dołączyć do pracy z pełną odpowiadającej kodu źródłowego do odczytu maszynowego dla biblioteki tym cokolwiek zmienia zostały wykorzystane w pracy (który musi być rozpowszechniany Sekcje 1 i 2 powyżej); i, jeśli praca jest wykonywalny związana z Biblioteką, z pełnego odczytu maszynowego „pracy, która wykorzystuje Bibliotekę”, jako kodu wynikowego i/lub kodu źródłowego, więc że użytkownik może modyfikować Bibliotekę a następnie połączyć ponownie, aby utworzyć zmodyfikowany plik wykonywalny zawierający zmodyfikowaną bibliotekę . (Jest zrozumiałe, że użytkownik który zmienia zawartość definicje plików w Bibliotece będzie niekoniecznie móc skompilować aplikację do korzystania zmodyfikowane definicje.)

b) Użyć odpowiedniego wspólny mechanizm biblioteki do łączenia z biblioteką . Odpowiedni mechanizm jest jednym , że (1) wykorzystuje w czasie wykonywania kopii biblioteka już obecny w systemie komputerowym użytkownika, zamiast funkcji bibliotecznych kopiowanie do wykonywalnego, oraz (2) będzie działać prawidłowo z zmodyfikowana wersja biblioteki, jeśli użytkownik ją zainstaluje, , o ile zmodyfikowana wersja jest zgodna z interfejsem z wersją , z którą praca została wykonana.

c) towarzyszyć pracę pisemną ofertę, ważną co najmniej trzy lata, aby dać ten sam użytkownik materiały określony w podpunkcie 6a, powyżej, za opłatą nie wyższą niż koszt wykonywania tego dystrybucja.

d) jeśli rozkład pracy jest przez oferowanie dostępu do kopiowania z wyznaczonym miejscu, oferują jednakowy dostęp do kopiowania powyżej wymienione materiały z tej samej miejscu. e) Sprawdź, czy użytkownik otrzymał już kopie tych materiałów lub, że masz już wysłał temu użytkownikowi kopię.

Dla pliku wykonywalnego, wymagana forma z „pracy, która wykorzystuje Bibliotekę” musi zawierać wszelkie dane i programy użytkowe potrzebne do reprodukcji wykonywalny z niego. Jednakże, jako wyjątek specjalny, materiały do ​​ nie musi obejmować coś która jest zwykle rozproszony (w albo źródłowego lub binarnej) z (kompilator, jądra i tak dalej) z działającym system na , w którym wykonywany jest plik wykonywalny, chyba że ten sam komponent jest dołączony do pliku wykonywalnego .

Może się zdarzyć, że ten wymóg sprzeczne ograniczenia licencyjne innych zastrzeżonych bibliotek, które wykonują zwykle nie towarzyszą system operacyjny .Taka sprzeczność oznacza, że ​​nie można używać ich razem z Biblioteką w pliku wykonywalnym, który rozpowszechnia się w postaci .