On 10/05/2011 14:46, Marco Maccalli wrote:
Dear Sirs,
a client of ours is interested in using GCC in order to compile a
proprietary application that they are currently developing. We would
like to have a better understanding of the implication on the
proprietary nature of our client's application related to the use of GCC
and its associated libraries. We understand that GCC uses libraries
available under GPL license (and not LGPL) and we would like to
understand whether there is a risk that these GCC libraries may bring
our client's application also under open source rules.
We would be grateful if you could help us in clarifying the above and/or
provide any guidance on how to be able to keep our client's application
proprietary and "closed source".
Disclaimer - IANAL...
gcc uses various gpl'ed libraries as part of the compilation process -
but these are used by the compiler, and are not included in the user's
output. Thus the gpl license on the compiler itself, and the libraries
used by the compiler on the development machine, do not impose any
requirements on the code compiled /using/ gcc. (This is exactly the
same as with commercial compilers - you are restricted in how you copy
the compiler and tools, but not in how you use your own code.)
License are relevant for library code that ends up in the generated
object code. There are at least three different types of library to
consider. Once is libraries that are tightly integrated into gcc - this
includes things like support functions for mathematics operations.
These are under the GPL with a special exception to say that when they
are used with gcc to generate compiled code, then they may be freely
used and linked without placing any restrictions on your source code.
Then there is the basic "C" library. This /may/ have some restrictions,
depending on the library used. glibc, as used on Linux systems, has no
restrictions. But other libraries for embedded systems may have
requirements. Typically these do not require the user to "open" or
publish his source code in any way, but they may require a copyright
notice in the users documentation.
Finally, there are other libraries - including those that typically come
with the system, or that are provided by third parties. They can have
any license the author deems fit. It may be GPL (a prime example is the
readln libraries), leading to the requirement that the entire user
source code is released under the GPL (if it is distributed). Often
such libraries are LGPL - you are then free to use them as long as you
link dynamically to the libraries. You cannot link statically to a LGPL
library unless your source code (or linkable object code) is released.
There may also be other requirements, such as copyright notices.
Basically, you need to check the license of each such library.
Hope that helps.