This is the mail archive of the crossgcc@cygnus.com mailing list for the crossgcc project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
In article <Pine.BSF.3.96.980109073907.9587B-100000.cygnus.crossgcc@vespucci.advicom.net> you write: >I still have to ask, "If the GPL or LGPL can be satisfied by an >application (embedded or otherwise) without any special considerations by >the developers, then why do libgcc and the gnat run-time have special >exceptions?" This is because libgcc is fundamentally different than an application or an end-user library. It is a support library for an application. Applications are GPLed. End-user libraries are LGPLed. And application support code (such as libgcc, bison parser skeleton, etc) get the libgcc licence. The intent here is that we do not want to put any restrictions on users of a GPLed application who just want to run the program. libgcc is linked with all programs compiled by gcc. If libgcc was GPLed, then this would mean that any program compiled by gcc would fall under the GPL because it was linked with GPLed code. This is clearly not useful. If libgcc was LGPLed, then this would mean that any program compiled by gcc would fall under the LGPL because it was linked with LGPLed code. This is also clearly not useful. Hence, we have a special licence for libgcc so that people who use gcc just to compile programs do not have to worry about license restrictions. A similar argument applies to the bison parser skeleton, which is linked with any program that uses bison to create a parser. Things are less clear for runtime libraries. The GNAT runtime for instance could be either LGPLed or have the libgcc license. GNU libc could be either LPGLed or have the libgcc license. The FSF prefers the LGPL for libraries, because it benefits the FSF. People using libraries in commercial applications prefer the libgcc license, because it makes it easier to use the libraries in commercial environments. Over time, there has been a shift from GPL to LGPL to libgcc license for some of those libraries which get the most commercial use. The C++ runtime for instance started out with the GPL and now has the libgcc license. Similarly, I would expect the GNAT runtime to have the libgcc license. GNU libc still has the LGPL I believe, but it is not commonly used in commercial environments. Neither Cygnus nor RTEMS use GNU libc for instance. They use a BSD derived library to avoid problems with using the LGPL in embedded applications. By the way, the LGPL is not convenient for embedded applications. The example I like to use is washing machines, because there exist washing machines whose control code was compiled by gcc. If any LGPL code was used in them, then the manufacturer would have to distribute a floppy disk containing an unlinked version of the control program. This would be very confusing to the end customer, to get a floppy disk along with their brand new washing machine. It is best to avoid this problem by never using any LGPL libraries in embedded applications. Jim