A GPL linking exception modifies the GNU General Public License (GPL) in a way that enables software projects which provide library code to be "linked to" the programs that use them, without applying the full terms of the GPL to the using program. Linking is the technical process of connecting code in a library to the using code, to produce a single executable file. It is performed either at compile time or run-time in order to produce functional machine-readable code. The Free Software Foundation states that, without applying the linking exception, a program linked to GPL library code may only be distributed under a GPL-compatible license.[1] This has not been explicitly tested in court, but linking violations have resulted in settlement.[2] The license of the GNU Classpath project explicitly includes a statement to that effect.
Many free software libraries which are distributed under the GPL use an equivalent exception, although the wording of the exception varies. Notable projects include ERIKA Enterprise,[3] GNU Guile,[4] the run-time libraries of GNAT,[4] GNU Classpath[5] and the GCC Runtime Library Exception.[6]
Compiler runtime libraries also often use this license modification or an equivalent one, e.g. the libgcc
library in the GNU Compiler Collection,[7] as well as all libraries of the Free Pascal project.
In 2007, Sun Microsystems released most of the source code to the class libraries for the Java SE and Java EE projects under version 2 of the GPL license plus the Classpath linking exception,[8] and used the same license as one possible license for their enterprise server GlassFish[9] and for their NetBeans Java IDE.[10]
Version 3 of the GNU Lesser General Public License (LGPL)[11] is likewise constructed as an exception to the GPL.[12]