I am developing a personal project (licensed under GPL-3.0-only) which I am trying to keep portable across different POSIX-compatible systems, but it is dependent on macros and typedefs from GLIBC's elf.h header. To enable portability, I've included a stripped down version of elf.h with only what I need in the source tree, with some changes that I believe to be too insubstantial to be copyrightable (e.g. replacing 1 << 2 with 4 and changing the code style to be more consistent with my own).

I know it is explicitly allowed to "upgrade" LGPLv2.1-licensed code to GPLv3, but I don't understand how.

Is it as simple as replacing the license header comment in my project's bundled elf.h with the GPLv3 one? If I do that, do I still need to provide the LGPLv2.1 license text in my project? Or, because the additions and changes are so insubstantial, do I need to keep the license as-is, as I have so far?


1 Answer 1


The GPL compatibility matrix has a specific entry for "I want to use a library under LGPLv2.1 and release my code under GPLv3 (or later)", and it simply says "YES". There is an explicit footnote, #7, for circumstances where something is only possible by using LGPL's permission to relicense, and it's not appended to this entry, so I infer from that that it's perfectly fine for you to use the LGPL library, continuing to distribute it under LGPL, alongside your code, which you distribute under GPLv3.

As you also note, "it is explicitly allowed to 'upgrade' LGPLv2.1-licensed code to GPLv3", but you say you're unclear about how to do it. Both the permission and advice on how to do it comes from LGPLv2.1 s3, which says

You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.)

So you may also release your code and the library together, all under GPLv3, by simply replacing all the LGPL references as described above. If you were to do that, you would no longer need to distribute a copy of LGPL with your software.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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