The main difference between the GPL and the LGPL is that the latter allows the work to be linked with (in the case of a library, "used by") a non-(L)GPLed program, regardless of whether it is licensed under a license of GPL family or other licenses. In LGPL 2.1, the non-(L)GPLed program can then be distributed under any terms if it is not a
derivative work. If it is a derivative work, then the program's terms must allow for "modification of the work for the customer's own use and
reverse engineering for debugging such modifications". Whether a work that uses an LGPL program is a derivative work or not is a legal issue. A standalone executable that
dynamically links to a library through a
.so,
.dll, or similar medium is generally accepted as not being a derivative work as defined by the LGPL. It would fall under the definition of a "work that uses the Library". Paragraph 5 of the LGPL version 2.1 states: :A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. Essentially, if it is a "work that uses the library", then it must be possible for the software to be linked with a newer version of the LGPL-covered program. The most commonly used method for doing so is to use "a suitable
shared library mechanism for linking". Alternatively, a
statically linked library is allowed if either source code or linkable object files are provided. ==Compatibility==