Users Guide

开发人员使用自由库,同时保留您作为此类程序的用户修改其中包含的自由库的自由。(我们还没有看到在头文件更改中实现此目
标,但在库的实际函数更改中已经实现了此目标)。这样做的目的是为了更快地开发自由库。下面列出关于复制、分发和修改的具体
条款和条件。请密切注意“基于库的作品”和“使用库的作品”之间的区别。前者包含从库中衍生的代码,而后者必须与库结合才能
运行。请注意,库可以由普通的通用公共许可协议而非此特殊许可所覆盖。有关复制、分发和修改的 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 节的要求发布);条件为作品是作为目标代码和/或源代码与库
或与完整的机器可读的“使用库的作品”链接的可执行文件,以便用户可以修改库,然后重新链接以生成包含修改过的库的已修改可
执行文件。(可以理解,更改库中定义文件内容的用户不一定可以重新编译应用程序以使用修改过的定义)。b) 随作品附带一个有
效期不少于
3 年的书面报价,以便为同一用户提供在上述第 6a 小节中指定的材料,费用不超过执行此发布的成本。c) 如果作品的发
布是通过在指定的位置提供访问副本来实现的,则提供等效访问以从同一位置复制上述指定的材料。d) 验证用户已收到这些材料的
副本,或者已经向该用户发送了副本。对于可执行文件,“使用库的作品”的所需形式必须包括从中重新生成可执行文件所需的任何
数据和公用程序。但是,作为特殊例外,发布的材料不必包含常规发布(以原代码形式或二进制形式)中运行可执行文件的操作系统
的主要组件(编译器、内核等),除非组件本身附带可执行文件。可能会出现这种情况,此要求与通常不附带操作系统的其他专有库
的许可限制相冲突。此类冲突意味着您不能在发布的可执行文件中同时使用此库和其他专有库。7. 您可以将属于基于库的作品的库设
24
第三方许可证