Qt 带有 LGPL 的单个 EXE?

发布于 2024-08-22 07:53:32 字数 1459 浏览 4 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

简单 2024-08-29 07:53:32

实际上,只要满足一些非常具体的要求,LGPL 就允许静态链接。例如,如果所有分发都是从您拥有 StaticProgram.exe 的网站完成的,那么只要用户还可以下载 StaticProgram.objLGPL-library-source.tar.gz。您还可以分发 StaticProgram.exe 并提供其他文件的书面报价。

具体来说,静态链接会创建一个作为 LGPL 代码派生的可执行文件,因此您必须遵守 LGPL 第 6 节:

6) 作为上述部分的例外,您还可以组合或链接
“使用图书馆的工作”
用于制作包含以下内容的作品的库
图书馆的部分内容,以及
根据以下条款分发该作品
您的选择,前提是条款
允许修改作品
客户自用及反转
调试此类的工程
修改。

您必须发出显着的通知
图书馆的每份作品副本
用于其中,并且图书馆和
本许可证涵盖其使用。
您必须提供此文件的副本
执照。如果工作在执行过程中
显示版权声明,您必须
包括版权声明
其中图书馆,还有一个
引导用户访问的参考
本许可证的副本。另外,你必须
执行以下操作之一:

a) 附上完整的相应作品
机器可读的源代码
库包括任何更改
在工作中使用过(必须是
根据第 1 节和第 2 节分发
多于);并且,如果该作品是
与库链接的可执行文件,
具有完整的机器可读
“使用图书馆的工作”,如
目标代码和/或源代码,所以
用户可以修改库
然后重新链接以生成修改后的
包含修改后的可执行文件
图书馆。 (据了解,
更改内容的用户
库中的定义文件将
不一定能够重新编译
使用修改后的应用程序
定义。)

b) 使用合适的共享库机制来链接
图书馆。合适的机制是
(1) 在运行时使用以下副本
该库已经存在于
用户的计算机系统,而不是
将库函数复制到
可执行文件,并且 (2) 将运行
正确地使用修改版本
库,如果用户安装了一个库,
只要修改后的版本是
接口与版本兼容
该作品是用它制作的。

c) 附上一份书面报价,有效期至少为
三年,为同一用户提供
第 6a 款规定的材料,
以上,收费不超过
执行此分配的成本。

d) 如果作品的分发是通过提供副本访问权限进行的
从指定地点,提供
复制上述内容的同等访问权限
指定材料来自同一
地方。
e) 验证用户是否已收到这些文件的副本
材料或者你已经有的材料
向该用户发送了一份副本。

对于可执行文件,所需的形式
“使用图书馆的作品”
必须包括任何数据和实用程序
复制所需的程序
从中可执行。然而,作为一个
特殊例外,材料
分布式不需要包含任何东西
呈正态分布(在
源或二进制形式)与
主要组件(编译器、内核、
等等)的操作系统
可执行文件运行的,除非
组件本身伴随着
可执行文件。

这个需求可能会发生
违反许可限制
其他专有库的
通常不伴随操作
系统。这样的矛盾意味着你
不能同时使用它们和图书馆
一起在一个可执行文件中,您
分发。

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.

长伴 2024-08-29 07:53:32

不可以,如果您的程序是闭源的,并且您想要链接 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文