IANAL etc., but I assume the first clause applies to programs designed
to be linked (but not yet linked) with the library but distributed as a
self-contained entity (possibly without the library), while the second
clause applies to programs after they’ve been linked. The process of
linking changes the status of the work from "work that uses the Library"
Hmmm, not sure. I’d think that if this was true, then every Windows
program ever written would be “owned” by MS because they link with
I also realized that the LGPL is written from a linux point-of-view. I
think the linking term may have slightly different meaning in the linux
world than it does in the windows world.
For example, if I have program APP, and library LIB, I can “link” APP to
LIB in many different ways under windows…
- APP + LIB linked together to form a single entity.
- APP links to LIB and LIB.DLL must be present (like MSVCRT.DLL).
- APP “soft” links to LIB and uses LIB with lots of GetProcAddress()
In case #1, there ends up being no LIB.DLL, so APP and LIB become one
entity with no “line in the sand”. Generally, I believe this is known as
statically linking. In this case, there is no visible difference between
the APP and the LIB, as all that is seem is APP.EXE.
In both cases #2 and #3, the APP is separate from LIB, and LIB.DLL is
used by APP (in Windows). Generally, I believe this is known as
dynamically linking. The main differenet between #2 and #3 is that
LIB.DLL must exist for APP to run in case #2, but in case #3 APP can
start without LIB.DLL present (with either limited or no functionality).
Also in cases #2 and #3, APP.EXE can be distributed without LIB.DLL, as
LIB.DLL can be provide separately or the user of APP.EXE must obtain
LIB.DLL from its official source.
All very interesting, but I’m making my animated GIF code a library, so
it will remain true to the LGPL.