Users Guide

Table Of Contents
由软件副本的自由以及您可以决定此服务是否收费),确保您能收到源代码或者在您需要时能得到它确保您能更改软件或将它
的一部分用于新的自由程序以及确保您知道您可以做上述这些事情。为了保障您的权利我们需要作出限制禁止任何人否认您
上述的权利或者要求您放弃这些权利。如果您分发软件的副本或者对之加以修改这些限制就转化成为您的责任。例如假设
您发布库的副本无论是免费或收取费用您必须将您所享有的一切权利给予接受者。您也必须确保他们也能收到或得到源代码。
如果您将其他代码链接到库则必须向接受者提供完整目标文件以便他们在更改和重新编译库之后可以将其重新链接到库。而且
您必须向他们展示这些条款的内容使他们知到他们所享有的权利。我们采取两项措施来保护您的权利(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. 不包含库的任何部分的衍生作品但通过编译或与库链接而专门与库一
起使用的程序称为“使用库的作品”。此类作品本身不是库的衍生作品因此不在本许可的范围内。但是将“使用库的作品”与
库链接会产生一个可执行文件该可执行文件是库的衍生作品因为它包含库的某些部分而不是“使用库的作品”。因此该可
执行文件属于本许可所涵盖的内容。第 6 节规定了发布此类可执行文件的条款。当“使用库的作品”使用属于库的头文件中的材料
该作品的目标代码可能是库的衍生作品即使源代码不是。作品是否可以不使用库进行链接或者作品本身是否为库对于是否属
于衍生作品特别重要。法律并没有精确定义此情况的界限。如果此类目标文件仅使用数字参数、数据结构布局和存取程序以及小
型宏和小型内联函数长度不超过十行),则目标文件的使用不受限制无论其在法律上是否为衍生作品。包含此目标代码的可
执行文件加上库的某些部分仍然受第 6 节的约束。否则如果作品是库的衍生作品您可以根据第 6 节的条款发布该作品的目标
代码。包含该作品的所有可执行文件也受第 6 节的约束无论它们是否与库本身直接链接。6. 作为上述各节的例外您也可以组合
或链接“使用库的作品”与库以生成包含库的某些部分的作品并根据您选择的条款发布该作品前提是该条款允许客户为了自己
使用而修改该作品和为了调试这些修改而执行逆向工程。您必须随每个作品的副本提供明确声明说明每个副本使用了该库并且
该库及其使用受本许可的约束。您必须提供本许可的副本。如果作品在执行过程中显示版权声明您必须包括其中的库的版权声明
以及将用户定向到本许可副本的引用。同时您还必须执行以下任一操作a) 随作品附带与库对应的完整机器可读源代码包括作
品中使用的任何更改必须根据上述第 1 和第 2 节的要求发布);条件为作品是作为目标代码和/或源代码与库或与完整的机器可读
第三方许可证
23