如果我使用LGPL许可的库,该怎么办?


48

我已经阅读了这些问题和答案,但是如果我动态链接到使用LGPL许可证的库(在我的情况下为SDL库),我仍然不知道该怎么做。

如果我正确理解LGPL文本,则需要以某种方式提供该库的源代码。这够了吗?如果没有,还需要做什么?

Answers:


47

LGPL的基本要求是将LGPL许可库和您自己的产品充分分开。这应该允许用户提供自己的库版本,而不是软件随附的版本(例如,已修复错误)。为此,您有两种选择:

  • 使用LGPL代码作为共享库(因此用户只需将其库的二进制文件复制到您附带的库中即可),或者
  • 提供整个项目的源代码(以便用户可以复制其库源代码并重新编译所有内容)。

但是请注意,尽管有必要,但仅分隔是不够的。您应该为用户提供一种用文件记录的方式,用他们的版本替换库(即,如何上传固件或为LGPL C ++库重新编译Python包装器)。

第二个值得注意的条款是归因要求。这应该有助于提升库的原始开发人员的名称,并说明其他人可能已经开发了什么很棒的软件:)。在“关于”窗口或自述文件的相关部分中(如果您的许可证是Apache,则为NOTICE文件),则应列出您使用的LGPL工作的名称。

请注意,我不是律师,这也不是法律建议。请注意,我也不是水管工,这不是卫生建议。


13

如果要静态链接LGPL库,则需要提供库的源以及应用程序的源代码或目标代码。

如果要动态链接LGPL库,则可以不分发库而单独分发应用程序,并告诉人们从何处下载它以及如何包含它,以及如何使用它。或者,您可以在应用程序中包含库二进制文件及其源的副本。

这很好地解释了这一点:http : //answers.google.com/answers/threadview/id/439136.html(我从OP中链接的问题的答案中获得了此信息)

亚纳斯


2
^这个。关键是这样的:产品的使用者将获得具有LGPL库的应用程序。他们可以对LGPL的零件进行改进,并在原始产品中使用新的改进版本吗?如果是,则您已遵守LGPL的预期目的。LGPLv3明确指出,即使该产品是嵌入式固件,您仍然必须使最终用户能够更换LGPL的部件。这意味着能够使用新版本的库重新编译完整的固件,并将其加载到设备上。(我的理解,IANAL,这不是法律建议。)
Scott Whitlock

@Scott:我相信嵌入式/固件部分仅在可以更改设备上的固件的情况下适用。
David Thornley

“ IANAS”中的“ S”是什么意思?
Joe Z.

1
@JoeZeng律师-Matt
Ellen

1

IANAL,但我的理解是LGPL的要点是它不会像GPL或AGPL那样依赖于它来“感染”代码。因此,您可以将LGPL代码作为依赖项,而无需执行任何操作。

话虽这么说,如果你改变/修改/发布LGPL代码你的应用程序,你需要做的是代码公开。


是否通过包含链接到原始来源/存储库的URL来满足“使资源公开可用”的共识/理解?(当然,假设您为产品使用了未修改的版本。)当我听到此消息时,我有些惊讶,因此实际上可能是完全错误的:)。
TMN
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.