Yahoo Groups archive

Lpc2000

Index last updated: 2026-04-28 23:31 UTC

Message

Re: [lpc2000] Re: Using LGPL code in your uC project

2005-11-22 by Rod Moffitt

Time to set the record straight.

From the LGPL:

'For example, if you distribute copies of the library, whether gratis or 
for a fee, you must give the recipients all the rights that we gave you. 
You must make sure that they, too, receive or can get the source code. 
If you link other code with the library, you must provide complete object 
files to the recipients, so that they can relink them with the library 
after making changes to the library and recompiling it.  And you must show 
them these terms so they know their rights.'

In others words you don't have to release your source, just the source for 
changes to the library. However you must also release the object files for 
the source that links with the LPGL code.

This isn't a big deal for applications that link dynamically since the 
binary you would have distributed is in fact object code (for example if 
you make a new web browser that links with the LGPL OpenSSL library, you 
just need to provide your users with the binary, which you would have done 
anyway). However in an embedded system without dynamic linking you would 
have to provide ALL of your object code (i.e. all the .o files) and the 
makefile/scripts or whatever you used to build your embedded target.

Note that if the creator of the LGPL library adds a clause allowing 
'release without your object code provided the changes are outside the 
LGPL library' (for example the ECOS project) then you don't need to 
release your object code. However I have not seen such a clause for the 
EFSL library (please correct me if I am wrong).

The net result is that if you use an LGPL libary in your embedded target 
you must provide the changes to the EFSL library in addition to the object 
code built from your source. If you have dynamic linking this can be the 
executable itself. However if you only have static linking then you must 
provide all of your object code plus any makefiles you used to build your 
target.

Many people are familiar with the uIP and lwIP stacks, which started out 
very strict and changed to BSD. Another example is libTomCrypt which was 
GPL (or LGPL, I can't remember) and is now public domain. They changed 
because people couldn't use their libraries in statically linked embedded 
designs without releasing their object code (or worse, they used GPL 
resulting in release of all the source). Hopefully the EFSL maintainers 
will either add a clause (as in ECOS) or change the license to BSD/MIT/PD.

If you have any questions please feel to email me directly (off the list 
if you want).

- Rod

--
                          ___  ____  ___    _      ___
  Rod Moffitt            / _ \/ __ \/ _ \  (_)__  / _/__
  http://rod.info       / , _/ /_/ / // / / / _ \/ _/ _ \
  rodANTISPAM@... /_/|_|\____/____(*)_/_//_/_/ \___/
  =======================================================
  ~ Where loved ones are remembered http://memoriam.org ~

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.