Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Qt single EXE with LGPL? [closed]

Tags:

qt

lgpl

I don't know much about the LGPL/GPL when it comes to distributing programs (without a Qt license); If I made a program, could I statically link the libraries to the exe so I have a single file to distribute when:

  • The program does not cost anything, it's just being distributed (closed source or open source)?

  • When you have to pay for the program can you still statically link?

like image 739
PythonGem Avatar asked Feb 16 '10 23:02

PythonGem


People also ask

Is Qt LGPL?

LGPL has been chosen as the primary open-source license for Qt, because it provides the following four degrees of freedom that stem from the foundations of the GPL: Freedom to run the program for any purpose.

What are my obligations when using Qt under the LGPL?

What are my obligations when using Qt under the LGPL? Firstly, you have to note that all Qt open source modules are not available under LGPLv3 license. Some modules are available under GPLv3 for open source usage, and e.g. 3rd party components such as Chromium web engine are provided under LGPLv2. 1.

Which licenses can be statically linked with proprietary software?

You can statically link proprietary code to LGPL libraries and the LGPL license does not "infect" your proprietary code. The only thing you have to do if you go this route is ensure that the people receiving your combined work are able to relink any modified version of the LGPL pieces.


1 Answers

Actually, the LGPL allows static linking as long as you meet a few very specific requirements. For example, if all distribution is done from your website where you have StaticProgram.exe, you're okay as long as users could also download StaticProgram.obj and LGPL-library-source.tar.gz. You could also distribute StaticProgram.exe with a written offer to provide the other files.

Specifically, static linking creates a single executable that is a derivative of the LGPL code, so you must comply with section 6 of the LGPL:

6) As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications.

You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things:

a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.)

b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with.

c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution.

d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy.

For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.

It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute.

like image 110
Kevin Avatar answered Sep 20 '22 22:09

Kevin