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.
No, if your program is closed source and you want to link against the LGPL version of Qt you must use dynamic linking. If you want to statically link then you must buy a license for Qt.
To use LGPL code in your closed source project, the user has to be able to replace the lgpl portion of the code. The easiest and by far the most common way to do this is to put all the LGPL code in a dll and then the user can replace the dll if they choose.
You are also allowed to use whatever technical means your language allows to accomplish the same goal. You can distribute object files and then the user can relink as other commenter pointed out, but I have never seen this done in practice.
It does not matter whether or not your product is free or pay. You can sell GPL/LGPL products.
发布评论
评论(2)
实际上,只要满足一些非常具体的要求,LGPL 就允许静态链接。例如,如果所有分发都是从您拥有 StaticProgram.exe 的网站完成的,那么只要用户还可以下载 StaticProgram.obj 和 LGPL-library-source.tar.gz。您还可以分发 StaticProgram.exe 并提供其他文件的书面报价。
具体来说,静态链接会创建一个作为 LGPL 代码派生的可执行文件,因此您必须遵守 LGPL 第 6 节:
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:
不可以,如果您的程序是闭源的,并且您想要链接 LGPL 版本的 Qt,则必须使用动态链接。如果您想静态链接,那么您必须购买 Qt 的许可证。
要在闭源项目中使用 LGPL 代码,用户必须能够替换代码的 lgpl 部分。最简单也是迄今为止最常见的方法是将所有 LGPL 代码放入一个 dll 中,然后用户可以根据需要替换该 dll。
您还可以使用您的语言允许的任何技术手段来实现相同的目标。您可以分发目标文件,然后用户可以像其他评论者指出的那样重新链接,但我在实践中从未见过这样做。
您的产品是免费还是付费并不重要。您可以销售 GPL/LGPL 产品。
No, if your program is closed source and you want to link against the LGPL version of Qt you must use dynamic linking. If you want to statically link then you must buy a license for Qt.
To use LGPL code in your closed source project, the user has to be able to replace the lgpl portion of the code. The easiest and by far the most common way to do this is to put all the LGPL code in a dll and then the user can replace the dll if they choose.
You are also allowed to use whatever technical means your language allows to accomplish the same goal. You can distribute object files and then the user can relink as other commenter pointed out, but I have never seen this done in practice.
It does not matter whether or not your product is free or pay. You can sell GPL/LGPL products.