GNU 库通用公共许可证,版本 2.0

跳转到许可证文本

请注意,GNU 库通用公共许可证已被GNU 较宽松通用公共许可证取代。

我们敦促大家使用GNU 较宽松通用公共许可证,而不是这个 GNU 库 GPL。我们在此保留库 GPL,供历史参考。


目录


GNU 库通用公共许可证

1991 年 6 月,版本 2

Copyright (C) 1991 Free Software Foundation, Inc.
<https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.

[This is the first released version of the library GPL.  It is
 numbered 2 because it goes with version 2 of the ordinary GPL.]

序言

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

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

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

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

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

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

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

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

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

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

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

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

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

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

复制、分发和修改的条款和条件

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

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

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

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

复制、分发和修改以外的活动不在本许可证的范围内;它们超出其范围。运行使用库的程序不受限制,并且仅当其内容构成基于库的作品时,才涵盖该程序的输出(独立于在编写它的工具中使用库)。这是否属实取决于库做什么以及使用该库的程序做什么。

1. 您可以按原样复制和分发库完整源代码的逐字副本,以任何媒介形式,前提是您在每个副本上显眼且适当地发布适当的版权声明和免责声明;保持所有提及本许可证和没有任何保证的声明完整;并随库分发本许可证的副本。

您可以收取转让副本的实际费用,并且您可以选择提供有偿保证保护。

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

  • a) 修改后的作品本身必须是一个软件库。
  • b) 您必须使修改后的文件带有显著声明,说明您更改了这些文件以及任何更改的日期。
  • c) 您必须使整个作品根据本许可证的条款免费许可给所有第三方。
  • d) 如果修改后的库中的某个设施引用一个功能或数据表,该功能或数据表由使用该设施的应用程序提供,而不是作为调用该设施时传递的参数,那么您必须尽力确保在应用程序不提供此类功能或表格的情况下,该设施仍然可以运行,并执行其目的的任何剩余有意义的部分。

    (例如,一个库中用于计算平方根的函数,其目的完全是明确定义的,与应用程序无关。因此,第 2d 小节要求,此函数使用的任何由应用程序提供的函数或表格都必须是可选的:如果应用程序不提供,则平方根函数仍然必须计算平方根。)

这些要求适用于整个修改后的作品。如果该作品中可识别的部分不是从库派生的,并且可以合理地被视为独立的、单独的作品,那么当您将这些部分作为单独的作品分发时,本许可证及其条款不适用于这些部分。但是,当您将相同的部分作为基于该库的整体作品的一部分分发时,整个作品的分发必须遵循本许可证的条款,其对其他被许可人的许可延伸至整个作品,因此也延伸至每个部分,无论谁编写的。

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

此外,仅仅是将另一个并非基于该库的作品与该库(或基于该库的作品)在存储或分发介质的卷上进行聚合,并不会使该其他作品受到本许可证的约束。

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

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

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

4. 您可以根据上述第 1 和第 2 节的条款,以目标代码或可执行形式复制和分发该库(或其一部分或衍生品,根据第 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. 在任何情况下,除非适用法律要求或书面同意,否则任何版权持有人或任何其他可能根据上述许可修改和/或重新发行本库的一方均不对您因使用或无法使用本库而造成的损害负责,包括任何一般性、特殊性、附带性或后果性损害(包括但不限于数据丢失或数据被认为不准确,或您或第三方遭受的损失,或本库无法与任何其他软件一起运行),即使该持有人或其他方已被告知可能发生此类损害。

条款和条件结束

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

如果您开发了一个新的库,并且您希望它对公众具有最大的可用性,我们建议将其做成自由软件,任何人都可以重新发行和更改。您可以通过允许根据这些条款(或者,根据普通的通用公共许可证的条款)重新发行来实现这一点。

要应用这些条款,请将以下声明附加到库中。为了最有效地传达免责声明,最好将它们附加到每个源文件的开头;并且每个文件都应该至少包含“版权”行和一个指向完整声明位置的指针。

one line to give the library's name and an idea of what it does.
Copyright (C) year  name of author

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Library General Public License for more details.

You should have received a copy of the GNU Library General Public
License along with this library; if not, see
<https://gnu.ac.cn/licenses/>.

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

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

Yoyodyne, Inc., hereby disclaims all copyright interest in
the library `Frob' (a library for tweaking knobs) written
by James Random Hacker.

signature of Moe Ghoul, 1 April 1990
Moe Ghoul, President of Vice

就是这样!