GNU 库通用公共许可证版本 2

版本 2 SPDX 短标识符:LGPL-2.0-only

Open Source Initiative Approved License

注意:自由软件基金会是 LGPL 的许可证管理者,认为此许可证已被 LGPL 版本 3 取代。

GNU 库通用公共许可证
版本 2,1991 年 6 月

版权所有 (C) 1991 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
允许任何人复制和分发此许可证文档的完整副本,
但不允许更改它。

[这是库 GPL 的第一个发布版本。它的编号为 2,因为它与普通 GPL 的版本 2 相对应。]
numbered 2 because it goes with version 2 of the ordinary GPL.]

序言

大多数软件的许可证旨在剥夺您共享和更改软件的
自由。 相反,GNU 通用公共
许可证旨在保证您共享和更改
自由软件的自由——确保软件对其所有用户都是自由的。

本许可证,即库通用公共许可证,适用于一些
特别指定的自由软件基金会软件,以及任何
其他作者决定使用它的库。 您也可以将其用于
您的库。

当我们谈论自由软件时,我们指的是自由,而不是
价格。 我们的通用公共许可证旨在确保您
有权分发自由软件的副本(如果您愿意,也可以为此服务收费),
您可以收到源代码或在需要时获取源代码,
您可以更改软件或在新自由程序中使用其部分内容;
并且您知道您可以做这些事情。

为了保护您的权利,我们需要做出限制,禁止
任何人否认您这些权利或要求您放弃这些权利。
如果您分发库的副本或修改库,
这些限制将转化为您的一些责任。

例如,如果您免费或
付费分发库的副本,则必须将我们给予
您的所有权利都给予接收者。 您必须确保他们也能收到或可以获得源代码。
源代码。 如果您将程序与库链接,则必须向接收者提供
完整的对象文件,以便他们可以在更改库并重新编译
库之后,将其与库重新链接。
库。 并且您必须向他们展示这些条款,以便他们了解自己的权利。

我们保护您权利的方法有两个步骤:(1) 版权保护
库,以及 (2) 向您提供本许可证,该许可证赋予您合法的
复制、分发和/或修改库的权限。

此外,为了保护每个分销商,我们希望确保
每个人都明白,这个自由
库不提供任何保证。 如果库被其他人修改并传递,我们
希望其接收者知道他们拥有的不是原始
版本,以便其他人引入的任何问题都不会影响
原始作者的声誉。

最后,任何自由程序都不断受到软件
专利的威胁。 我们希望避免公司分发自由
软件会单独获得专利许可的危险,从而实际上
将程序转变为专有软件。 为了防止这种情况,
我们已明确规定,任何专利都必须获得许可,供所有人
免费使用,否则根本不予许可。

大多数 GNU 软件,包括一些库,都受普通
GNU 通用公共许可证的保护,该许可证是为实用程序设计的。 本
许可证,即 GNU 库通用公共许可证,适用于某些
指定的库。 本许可证与普通许可证
截然不同; 请务必完整阅读它,并且不要假设其中的任何内容
与普通许可证中的内容相同。

我们为某些库单独制定公共许可证的原因是
它们模糊了我们通常在修改或添加到
程序和简单使用程序之间所做的区分。 将程序与库链接,而不
更改库,在某种意义上只是简单地使用库,并且类似于
类似于运行实用程序或应用程序。 但是,在
文本和法律意义上,链接的可执行文件是一个组合作品,是
原始库的衍生作品,而普通通用公共许可证
将其视为如此。

由于这种模糊的区分,为库使用普通通用
公共许可证并未有效地促进软件
共享,因为大多数开发人员不使用库。 我们
得出的结论是,较弱的条件可能更好地促进共享。

但是,无限制地链接非自由程序将剥夺
这些程序的用户从库本身的自由状态中获得的所有好处。
库本身的自由状态中获得的所有好处。 本库通用公共许可证旨在
允许非自由程序的开发人员使用自由库,同时
保留您作为此类程序用户的自由,以更改其中包含的自由
库。 (我们尚未看到如何实现
关于头文件更改的目标,但我们已实现
关于库实际功能更改的目标。) 希望这
将导致自由库的更快发展。

以下是关于复制、分发和
修改的精确条款和条件。 请密切注意“基于库的作品”和“使用库的作品”之间的区别。
“基于库的作品”和“使用库的作品”之间的区别。 前者包含从库派生的代码,而后者仅
前者包含从库派生的代码,而后者仅
与库一起工作。

请注意,库有可能受普通
通用公共许可证而不是此特殊许可证的约束。

GNU 库通用公共许可证
复制、分发和修改的条款和条件

0. 本许可证协议适用于任何软件库,该软件库
包含版权所有者或其他授权
方发布的通知,声明可以根据本库的条款分发
通用公共许可证(也称为“本许可证”)。 每个被许可人都
被称为“您”。

“库”是指软件功能和/或数据的集合,
准备与应用程序(
使用其中一些功能和数据)方便地链接以形成可执行文件。

下面的“库”是指根据这些条款分发的任何此类软件库或作品。
“基于库的作品”是指库或任何根据
著作权法的衍生作品:也就是说,包含库或
库的一部分的作品,无论是逐字记录还是经过修改和/或
库的一部分的作品,无论是逐字记录还是经过修改和/或
直接翻译成另一种语言。 (此后,翻译
无限制地包含在术语“修改”中。)

作品的“源代码”是指用于
对其进行修改的作品的首选形式。 对于库,完整的源代码是指
它包含的所有模块的所有源代码,以及任何相关的
接口定义文件,以及用于控制库的编译
和安装的脚本。

复制、分发和修改以外的活动不在
本许可证的范围内; 它们超出其范围。 以下行为:
运行使用库的程序不受限制,并且来自
此类程序的输出仅在其内容构成基于
库的作品时才受保护(独立于在编写工具中使用库)。
库的作品时才受保护(独立于在编写工具中使用库)。 这是否属实取决于库的功能
以及使用库的程序的功能。

1. 您可以复制和分发您收到的库的完整
源代码的完整副本,以任何介质形式,前提是
您在每个副本上显着且适当地发布
适当的版权声明和免责声明; 保持完整
所有引用本许可证以及不提供任何
保证的声明; 并随库分发本许可证的副本。
库。

您可以为传输副本的物理行为收取费用,
并且您可以选择提供保修保护以换取
费用。

2. 您可以修改您的库的一个或多个副本或其任何部分,
从而形成基于库的作品,并根据第 1
节的条款复制和分发此类修改或作品
以上,前提是您还满足以下所有条件

a) 修改后的作品本身必须是软件库。

b) 您必须使修改后的文件带有显着声明
您更改了文件以及任何更改的日期的声明。

c) 您必须使整个作品根据本许可证的条款
免费许可给所有第三方。

d) 如果修改后的库中的工具引用应用程序提供的
函数或数据表,该应用程序使用
该工具,而不是在调用该工具时传递的参数,
则您必须尽力确保,
如果应用程序未提供此类函数或
表,该工具仍然可以运行,并执行其目的仍然有意义的任何部分。
其目的仍然有意义的任何部分。

(例如,库中用于计算平方根的函数具有

应用程序完全独立的明确定义的用途。 因此,第 2d 小节要求任何
此函数使用的应用程序提供的函数或表必须
是可选的:如果应用程序未提供,则平方根函数仍必须计算平方根。)
根函数仍必须计算平方根。)

这些要求适用于整个修改后的作品。 如果
该作品的可识别部分并非源自库,
并且可以合理地被认为是独立的和单独的作品,
那么当您将这些部分作为单独的作品分发时,本许可证及其条款不适用于这些部分。
部分。 但是,当您
将相同的部分作为基于库的作品的整体的一部分分发时,
库的作品的整体的一部分分发时, 整个作品的分发必须符合本许可证的条款,
本许可证的条款, 其中对其他被许可人的许可扩展到
整个作品,因此扩展到每个部分,无论谁编写了它。
整个作品,因此扩展到每个部分,无论谁编写了它。

因此,本节的目的不是主张权利或质疑
您对自己完全编写的作品的权利; 相反,目的是
行使控制基于库的衍生作品或
集体作品的分发的权利。

此外,仅仅将另一个不基于库的作品
与库(或与基于库的作品)聚合在
存储或分发介质的卷上,不会使另一个作品受
本许可证的范围约束。

3. 您可以选择将普通 GNU 通用公共
许可证的条款应用于库的给定副本,而不是本许可证。 为此,
您必须更改所有引用本许可证的声明,
以便它们引用普通 GNU 通用公共许可证版本 2,
而不是本许可证。 (如果出现了比版本 2 更新版本的
普通 GNU 通用公共许可证,那么您可以指定
您希望使用的版本。) 请勿对
这些声明进行任何其他更改。

一旦对给定副本进行了此更改,则该更改对于该副本是不可逆转的,
该副本,因此普通 GNU 通用公共许可证适用于从该副本制作的所有
后续副本和衍生作品。

当您希望将库的部分代码复制到
不是库的程序中时,此选项很有用。

4. 您可以根据第 2 节复制和分发库(或其一部分或
其衍生作品),以目标代码或可执行形式
根据上述第 1 节和第 2 节的条款,前提是您随附
完整的相应机器可读源代码,该源代码
必须根据上述第 1 节和第 2 节的条款,在
通常用于软件交换的介质上分发。

如果通过提供从指定位置复制的访问权限来分发目标代码,
则提供从同一位置复制源代码的对等访问权限即可满足
分发源代码的要求,即使第三方
没有义务将源代码与目标代码一起复制。
没有义务将源代码与目标代码一起复制。

5. 不包含库任何部分衍生作品的程序,
但旨在通过与库编译或链接来与库一起工作,
称为“使用库的作品”。 这样的
作品,就其本身而言,不是库的衍生作品,因此
因此不属于本许可证的范围。

但是,将“使用库的作品”与库链接
会创建一个可执行文件,该可执行文件是库的衍生作品(因为它
包含库的部分内容),而不是“使用库的
库”。 因此,可执行文件受本许可证约束。
第 6 节规定了分发此类可执行文件的条款。

当“使用库的作品”使用来自头文件的材料时,
该头文件是库的一部分,即使源代码不是,
该作品的目标代码也可能是库的衍生作品。
如果作品可以在没有库的情况下链接,或者如果作品本身是一个库,
如果作品可以在没有库的情况下链接,或者如果作品本身是一个库, 则这是否属实尤其重要。
这是否属实的阈值在法律上没有明确定义。

如果此类目标文件仅使用数值参数、数据
结构布局和访问器,以及小型宏和小型内联
函数(长度为十行或更少),则对目标
文件的使用不受限制,无论其在法律上是否为衍生
作品。 (包含此目标代码以及库部分的
可执行文件仍将属于第 6 节。)

否则,如果作品是库的衍生作品,您可以
根据第 6 节的条款分发作品的目标代码。
任何包含该作品的可执行文件也属于第 6 节,
无论它们是否直接与库本身链接。

6. 作为对上述各节的例外,您还可以编译或
将“使用库的作品”与库链接以生成
包含库部分内容的作品,并分发该作品
根据您选择的条款,前提是这些条款允许
修改作品供客户自己使用,以及进行逆向
工程以调试此类修改。

您必须在作品的每个副本上显着声明
其中使用了库,并且库及其使用受
本许可证的约束。 您必须提供本许可证的副本。 如果作品
在执行期间显示版权声明,则必须在其中包含
库的版权声明,以及
将用户定向到本许可证副本的参考。 此外,您必须执行以下一项操作
以下操作

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

b) 随作品附上一份书面报价,有效期至少为
三年,向同一用户提供上述
第 6a 小节中指定的材料,费用不超过
执行此分发的成本。

c) 如果通过提供从指定位置复制的访问权限来分发作品,
则提供从同一位置复制上述
指定材料的对等访问权限。

d) 验证用户是否已收到这些
材料的副本,或者您是否已向该用户发送了副本。

对于可执行文件,“使用库的作品”的所需形式
必须包括从其复制可执行文件所需的任何数据和实用程序。
再现可执行文件所需的任何数据和实用程序。 但是,作为特殊例外,
分发的源代码不必包括通常
与主要
组件(编译器、内核等)一起分发(以源代码或二进制形式)的任何内容,
组件(编译器、内核等)一起分发(以源代码或二进制形式)的任何内容, 除非该组件本身随附
可执行文件。

此要求可能与通常不
随附操作系统的其他专有库的许可证
限制相矛盾。 这种矛盾意味着您不能
在您分发的可执行文件中同时使用它们和库。
在您分发的可执行文件中同时使用它们和库。

7. 您可以将基于库的作品的库工具并排
放置在单个库中,与其他不受本许可证约束的库
工具一起,并分发此类组合
库,前提是基于
库的作品和另一库工具的单独分发在其他方面是
允许的,并且前提是您执行以下两项操作

a) 随组合库附上同一作品的副本,
该作品基于库,未与任何其他库
工具组合。 这必须根据上述
各节的条款分发。

b) 在组合库中显着声明
其一部分是基于库的作品,并说明
在何处可以找到同一作品的随附未组合形式。

8. 除非本许可证明确规定,否则您不得复制、修改、再许可、链接或分发
库。 任何
其他复制、修改、再许可、链接或
分发库的尝试均无效,并将自动终止您在本许可证下的
权利。 但是,根据本许可证从您处收到副本
或权利的各方,只要这些各方保持完全遵守,其许可证就不会
终止。

9. 您无需接受本许可证,因为您未
签署它。 但是,没有其他任何内容授予您修改或
分发库或其衍生作品的权限。 如果您不接受本许可证,
则法律禁止这些行为。 因此,通过
修改或分发库(或任何基于
库的作品),您表示您接受本许可证以执行此操作,并且
所有关于复制、分发或修改
库或基于库的作品的条款和条件。

10. 每次您重新分发库(或任何基于
库的作品)时,接收者都会自动收到来自
原始许可人的许可证,以复制、分发、链接或修改库,
但须遵守这些条款和条件。 您不得对接收者行使此处授予的权利施加任何进一步的
权利施加任何进一步的限制。
您不负责强制第三方遵守
本许可证。

11. 如果由于法院判决或专利侵权指控或任何其他原因(不限于专利问题),
侵权或专利问题),
对您施加了与本许可证的条件相矛盾的条件(无论是通过法院命令、协议还是
对您施加了与本许可证的条件相矛盾的条件(无论是通过法院命令、协议还是
以其他方式),它们不会免除您遵守本许可证的条件。 如果您无法
分发以同时满足您在本
许可证下的义务和任何其他相关义务,那么结果是您
可能根本无法分发库。 例如,如果专利
许可证不允许所有通过您直接或间接收到副本的人免版税重新分发库,
许可证不允许所有通过您直接或间接收到副本的人免版税重新分发库,
那么您满足它和本许可证的唯一方法是
完全避免分发库。

如果本节的任何部分在任何
特定情况下被认定为无效或不可执行,则本节的其余部分旨在适用,
并且本节作为一个整体旨在在其他情况下适用。

本节的目的不是诱导您侵犯任何
专利或其他财产权主张,或质疑任何
此类主张的有效性; 本节的唯一目的是保护
通过公共许可证实践实施的自由软件分发系统的完整性。
通过公共许可证实践实施的自由软件分发系统的完整性。 许多人做出了
慷慨的贡献,为通过该系统分发的各种软件
慷慨的贡献,为通过该系统分发的各种软件
系统; 由作者/捐赠者决定他或她是否愿意
通过任何其他系统分发软件,并且被许可人不能
强加这种选择。

本节旨在彻底明确地说明人们认为的
是本许可证其余部分的后果。

12. 如果库的分发和/或使用在
某些国家/地区受到专利或受版权保护的接口的限制,则
将库置于本许可证下的原始版权所有者可以添加
明确的地域分发限制,排除这些国家/地区,
以便仅在或在未如此
排除的国家/地区之间允许分发。 在这种情况下,本许可证包含该限制,就好像
写在本许可证的正文中一样。

13. 自由软件基金会可能会不时发布修订和/或新的
库通用公共许可证版本。
此类新版本在精神上将与当前版本相似,
但可能在细节上有所不同,以解决新问题或疑虑。

每个版本都给出了一个可区分的版本号。 如果库
指定了适用于它的本许可证的版本号和
“任何更高版本”,您可以选择遵循该版本或自由软件基金会发布的任何更高版本的条款和条件。
条件或自由软件基金会发布的任何更高版本的条款和条件。
自由软件基金会。 如果库未指定
许可证版本号,您可以选择自由软件基金会发布的任何版本。
许可证版本号,您可以选择自由软件基金会发布的任何版本。

14. 如果您希望将库的部分内容合并到其他自由
程序中,而这些程序的发行条件与这些条件不兼容,
请写信给作者请求许可。 对于受
自由软件基金会版权保护的软件,请写信给自由
软件基金会; 我们有时会为此破例。 我们的
决定将以维护自由状态的两个目标为指导
我们自由软件的所有衍生作品,并促进软件的共享
和普遍重用。

无担保

15. 由于本库是免费许可的,因此不提供
在适用法律允许的范围内,对本库提供任何保证。
除非版权所有者和/或
其他方另有书面声明,否则按“原样”提供本库,不提供任何
形式的保证,无论是明示的还是暗示的,包括但不限于
适销性和特定用途适用性的暗示保证。
适销性和特定用途适用性的暗示保证。 关于
库的质量和性能的全部风险由您承担。 如果库被证明存在缺陷,您将承担
库的质量和性能的全部风险由您承担。 如果库被证明存在缺陷, 您将承担

16. 在任何情况下,除非适用法律要求或书面同意,否则任何版权所有者或
书面同意,否则任何版权所有者或
和/或重新分发库的其他方均不对您
承担损害赔偿责任,包括因使用或无法使用
库而引起的任何一般性、特殊性、偶然性或
后果性损害赔偿(包括但不限于数据丢失或数据
变得不准确或您或第三方遭受的损失,或
库未能与任何其他软件一起运行),即使
此类持有人或其他方已被告知存在此类
损害赔偿的可能性。

条款和条件结束

如何将这些条款应用于您的新库

如果您开发了一个新库,并且您希望它对公众
尽可能有用,我们建议将其制作为自由软件,
每个人都可以重新分发和更改它。 您可以通过允许
根据这些条款(或,或者,根据
普通通用公共许可证)重新分发来做到这一点。

要应用这些条款,请将以下声明附加到库中。 这是
最安全的方法是将它们附加到每个源文件的开头,以最有效地
传达不提供保证的信息; 并且每个文件应至少包含
“版权”行以及指向完整声明位置的指针。

<一行文字,给出库的名称以及对其功能的简要说明。>
版权所有 (C) <年份> <作者姓名>

本库是自由软件; 您可以根据 GNU 库通用公共
许可证的条款重新分发和/或修改它,
该许可证由自由软件基金会发布; 可以是
许可证版本 2,或(由您选择)任何更高版本。

分发本库是希望它能有用,
但**不提供任何保证**; 甚至不提供关于
**适销性**或**特定用途适用性**的暗示保证。 有关更多详细信息,请参阅 GNU
库通用公共许可证。

您应该已收到与本库一起提供的 GNU 库通用公共
许可证的副本; 如果没有,请写信给 Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

还要添加有关如何通过电子和纸质邮件联系您的信息。

如果您作为程序员工作,您还应该让您的雇主或您的
学校(如果有)签署库的“版权免责声明”,如果
必要的话。 这是一个示例; 更改名称

Yoyodyne, Inc. 特此声明放弃对 James Random Hacker 编写的
库 `Frob’(用于调整旋钮的库)的所有版权权益。

<Ty Coon 的签名>,1990 年 4 月 1 日
Ty Coon,副总裁

就是这样!