The case of proprietary programs linking to GPL'd libraries has been discussed thoroughly. However the inverse case - a GPL'd program is linking to a proprietary library - is rarely mentioned.

Therefore my question is: Can I use a proprietary library in my own GPL'd program (which I intend to distribute) without violating the GPL?

Note: I'm assuming the library is an integral part of the GPL'd program and the library's (non-free) license allows me to link it into the program.


2 Answers 2


The Free Software Foundation's FAQ says this:

I'd like to modify GPL-covered programs and link them with the portability libraries from Money Guzzler Inc. I cannot distribute the source code for these libraries, so any user who wanted to change these versions would have to obtain those libraries separately. Why doesn't the GPL permit this? (#MoneyGuzzlerInc)

There are two reasons for this. First, a general one. If we permitted company A to make a proprietary file, and company B to distribute GPL-covered software linked with that file, the effect would be to make a hole in the GPL big enough to drive a truck through. This would be carte blanche for withholding the source code for all sorts of modifications and extensions to GPL-covered software.

Giving all users access to the source code is one of our main goals, so this consequence is definitely something we want to avoid.

More concretely, the versions of the programs linked with the Money Guzzler libraries would not really be free software as we understand the term—they would not come with full source code that enables users to change and recompile the program.

So although you can "use" your combination of GPL program and proprietary license, you cannot "convey" or "distribute" the GPL program without the proprietary library, unless that proprietary library is a "system library".

The GPL itself defines a "system library" in words that are somewhat incomprehensible to a non-lawyer:

The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it.

I think it means libraries that the user will be able to obtain independently without a "vendor lockin".

See this question and its answers about System Libraries.

I am not a lawyer, so this is not legal advice, but just a lay person's opinion.


If you own the whole code of the GPL program (it is your choice to offer it under the terms of GPL), you can add the licensing exception ("as an exception, it is allowed to call the proprietary library X").

However you cannot add such exception if you are just adapting or extending some existing GPL program you do not own.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.