Statisch Linken mit LGPL-Lib - meine Loesung



  • LGPL-Bibliotheken erlauben zwar Closed Source - Anwendungen, Voraussetzung ist allerdings, dass der LGPL-Anteil der Anwendung aenderbar/erzetzbar ist, mit anderen Worten: man muss eine DLL mitliefern.
    Mir ist dazu eine Idee gekommen. Ist es nicht moeglich, dass (m)eine Software zwar auf die DLL zugreift, wenn sie verfuegbar (im gleichen Ordner) ist (dynamisch gelinkt), aber andernfalls auf die statisch kompilierte Bibliothek zugreift, wenn die DLL nicht zur Verfuegung steht?
    Zwei Fragen dazu:
    1. Waer das technisch moeglich?
    2. Wuerde man die LGPL damit nicht verletzen?



  • Welchen Sinn wuerde das haben? Du haettest ja nur mehr Aufwand und keinen Vorteil davon.

    Gefuehlt wuerde ich sagen, dass es nicht OK ist.



    1. Ja
    2. Nein


  • Shade Of Mine schrieb:

    Welchen Sinn wuerde das haben? Du haettest ja nur mehr Aufwand und keinen Vorteil davon.

    Das haette den Vorteil, dass man die Software als Standalone-Executable verbreiten koennte ohne die LGPL zu verletzen. Dann muesste man nur noch in einer ReadMe oder einer About-Dialogbox oder so hinweisen, dass man auch eine andere Version der LGPL-Lib verwenden kann, wenn man die DLL ins Arbeitsverzeichnis der Software einfuegt.

    knivil schrieb:

    1. Ja

    Und wie koennte man das machen ohne den Source Code der Bibliothek zu veraendern? Schliesslich haette man dann ja multiple Definitionen von den Klassen/Funktionen etc.

    Ich hab mir jetzt die Lizenz nochmal genauer angesehen...

    (...) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version. (...)

    a) Die Bibliothek ist auf dem System des Benutzers vorhanden - um genauer zu sein in der Executable.
    b) kann man, wenn die DLL ins Programmverzeichnis hinzufuegt.



  • "The Library" refers to a covered work governed by this License, other than an Application or a Combined Work as defined below.

    Nur weil du die LGPL "grosszuegig" interpretierst, macht es nicht besser. "Executable" ist eben nicht "Library".

    kann man, wenn die DLL ins Programmverzeichnis hinzufuegt

    Und wenn der Benutzer sie aderswo installiert hat?

    Und wie koennte man das machen ohne den Source Code der Bibliothek zu veraendern?

    Alle benutzten Funktionen sind als Variable in Funktionszeigern hinterlegt. Wenn die DLL vorhanden ist, dann wird sie geladen und die Werte entsprechend mit den Verweisen auf die Funktionen in der DLL initialisiert. Wenn nicht, dann eben nicht. Im folgenden Programm darfst du dann die Funktionen aber nur ueber die entsprechenden Funktionszeiger ansprechen. Linken quasi per Hand. Den Sinn verstehe ich trotzdem nicht (jaja, auch wenn du dein Problem dargelegt hasts).



  • Manchmal liest man, dass man statisch linken darf, wenn man die Objectfiles des eigenen Programms mitliefert (dann kann der andere dein Programm mithilfe der Objectfiles neu linken). So müsstest du immerhin deinen Sourcecode nicht mitliefern. 😃


Log in to reply