Users Guide

Table Of Contents
由。相反,GNU 通用公共许可协议力图保证您分享与修改自由软件的自由 - 确保软件对所有的使用者都是自由的。本许可,即库通
用公共许可协议适用于某些专门设计的自由软件基金会的软件,以及作者决定使用本许可的任何其他库。您也可以将其用于您自己的
库。我们谈到自由软件 (free software) 时,是指使用的自由,而不是价格的免费。我们的通用公共许可证旨在确保您拥有分发自由软
件副本的自由(以及您可以决定此服务是否收费),确保您能收到源代码或者在您需要时能得到它,确保您能更改软件或将它的一部
分用于新的自由程序,以及确保您知道您可以做上述这些事情。为了保障您的权利,我们需要作出限制:禁止任何人否认您上述的权
利,或者要求您放弃这些权利。如果您分发软件的副本,或者对之加以修改,这些限制就转化成为您的责任。例如,假设您发布库的
副本,无论是免费或收取费用,您必须将您所享有的一切权利给予接受者。您也必须确保他们也能收到或得到源代码。如果您将其他
代码链接到库,则必须向接受者提供完整目标文件,以便他们在更改和重新编译库之后可以将其重新链接到库。而且您必须向他们展
示这些条款的内容,使他们知到他们所享有的权利。我们采取两项措施来保护您的权利:(1) 以版本保护库,以及 (2) 为您提供本许
可,赋予您复制、发布和/或修改库的法律许可。此外,对于每个分销商的保护,我们需要清楚地让每个人明白,此自由库是没有担
保责任的。如果库被他人修改,并加以传播,我们希望让其接收方知道,他们所得到的并非原始版本,因此由他人引起的任何问题均
不影响原作者的声誉。最后,任何自由程序都不断受到软件专利的威胁。我们希望不要让自由程序的再分发者以个人名义取得专利许
可证,从而避免使程序从实质上变为专有软件。为了防范这种情况,我们在此明确声明,任何专利都必须许可每个人自由使用,否则
就不应授与专利。大多数 GNU 软件,包括某些库均由设计用于公用程序的普通 GNU 通用公共许可协议的约束。本许可,即 GNU
通用公共许可协议适用于某些指定的库。本许可明显不同于普通许可;请确保完整阅读其内容,不要认为其中的任何内容都与普通许
可相同。我们之所以对一些库有一个单独的公共许可,是因为它们混淆了我们通常所做的区别,无法分辨是对程序进行了修改或增添
还是仅仅使用程序。链接程序和库而不更改库在某种意义上只是使用库,类似于运行公用程序或应用程序。但是,从文字和法律意义
上说,链接的可执行文件是一种组合作品,是原始库的衍生产品,普通的通用公共许可协议会这样认定。由于此模糊的区别,对库使
用普通的通用公共许可协议不能有效地促进软件共享,因为大多数开发者未使用库。我们认为在较宽松的条件可能会促进共享。但
是,不受限制地链接非自由程序会剥夺这些程序的用户享受库本身自由状态的所有好处。此库通用公共许可协议力图允许非自由程序
开发人员使用自由库,同时保留您作为此类程序的用户修改其中包含的自由库的自由。(我们还没有看到在头文件更改中实现此目
标,但在库的实际函数更改中已经实现了此目标)。这样做的目的是为了更快地开发自由库。下面列出关于复制、分发和修改的具体
条款和条件。请密切注意“基于库的作品”和“使用库的作品”之间的区别。前者包含从库中衍生的代码,而后者必须与库结合才能
运行。请注意,库可以由普通的通用公共许可协议而非此特殊许可所覆盖。有关复制、分发和修改的 GNU 库通用公共许可条款和条
件。本许可协议适用于任何包含版权持有者或其他被授权方声明的软件库,他们声称可以根据此库通用公共许可协议(也称为“本许
可”)条款发布此软件库。每个被许可人用“您”来称呼。“库”是指一组软件功能和/或数据,以便与应用程序链接(使用其中一
些功能和数据)以形成可执行文件。下面的“库”是指根据这些条款发布的此类任何软件库或作品。“基于库的作品”是指受版权法
约束的库或任何衍生作品:也就是说,该作品包含库或库的一部分,可以是原封不动包含,或经过修改和/或直接翻译成其他语言。
(在下文中,翻译包括在术语“修改”中,没有对其限制。)作品的“源代码”是指对作品进行修改的首选形式。对于库而言,完整
的源代码是指作品中包含的所有模块的所有源代码,加上所有关联的接口定义文件和用于控制编译和安装库的脚本。复制、分发和修
改以外的其他活动超出了本许可证的范围。运行程序的行为不受限制,程序的输出仅在其内容构成基于程序的作品(独立于运行程序
的结果)时才属于许可证范围。是否符合此条件要视程序的用途而定。1. 您可以在任何媒体中复制和发布您收到的库的完整源代码的
完整副本,前提是必须符合以下要件:以显著及适当的方式在每个副本上发布适当的版权声明和免担保声明,维持所有有关本许可以
及免担保声明的原貌;并且本许可的副本连同库一起发布。您可对转让副本的实际行为收取一定费用,您也有权选择提供担保以换取
一定的费用。
2. 您可以修改库或其任何部分的一个或多个副本,以形成基于库的作品,并根据上述第 1 节的条款复制和分发此修改或
作品,前提是您要满足下述所有条件:a) 修改后的作品本身必须是软件库。b) 您必须在修改的文件中提供明确声明,说明您修改了
这些文件及具体的修改日期。c) 您必须根据本许可的条款将整个作品免费许可给所有第三方。d) 如果修改后的库中的设备引用由使
用该设备的应用程序提供的函数或数据表,而不是作为在调用该设备时传递的参数,则您必须做出善意的努力,以确保在应用程序未
提供此类函数或表时设备仍然正常运行,并且执行其用途的任何部分仍然有意义。(例如,库中用于计算平方根的函数有一个完全独
立于应用程序的明确定义的用途。因此,2d 小节要求所有应用程序提供的函数或该函数使用的表必须是可选功能:如果应用程序不
提供,则平方根函数仍然必须计算平方根。)这些要求适用于整个修改的作品。如果该作品的可识别部分并非衍生自该程序,并且可
以合理地认为其本身是独立、不同的作品,则将其作为独立的作品分发时,本许可及其条款不适用于这些部分。但是当您将这一部分
基于程序的作品作为一个整体分发时,则作为一个整体分发必须符合本许可条款的规定。其他被许可人的使用范围延伸到整个作品,
也就是延伸到每个部分,而不管作者是谁。因此,本条款的意图不在于索取权利或剥夺您对完全由您编写的作品的权利;而是为了行
使权利来控制基于库的衍生作品或合作作品的发布。此外,仅将不是基于库的其他作品和库(或者与基于库的作品)聚合在存储卷或
分发介质中,并不导致将其他作品置于此许可的约束之下。3. 您可以选择对给定的库副本适用普通 GNU 通用公共许可协议而非本许
可。为此,您必须更改引用本许可的所有声明,使之引用普通 GNU 通用公共许可协议第 2 版而非本许可。(如果出现了比普通 GNU
通用公共许可协议第 2 版更新的版本,如果愿意,您可以指定该版本)。请不要对这些声明进行任何其他更改。一旦在给定副本中进
行了此更改,该副本将是不可逆的,因此普通 GNU 通用公共许可协议适用于从该副本中制作的所有后续副本和衍生作品。如果您希
望将库的部分代码复制到不是库的程序中,则此选项非常有用。4. 您可以按照上述第 1 和第 2 节条款以目标代码或可执行文件的形式
复制和发布库(或者第 2 节规定的部分库或衍生作品),前提是您将其附加到相应的完整机器可读源代码,源代码必须根据上述第 1
和第 2 节条款发布在通常用于软件交换的介质上。如果目标代码的发布是通过在指定的位置提供访问副本来实现的,则提供可自相同
位置复制源代码的等效访问满足发布源代码的要求,即使不强求第三方随目标代码一起复制源代码。5. 不包含库的任何部分的衍生作
品但通过编译或与库链接而专门与库一起使用的程序称为“使用库的作品”。此类作品本身不是库的衍生作品,因此不在本许可的范
围内。但是,将“使用库的作品”与库链接会产生一个可执行文件,该可执行文件是库的衍生作品(因为它包含库的某些部分)而不
26
第三方许可证