GCC 运行时库例外


GCC 运行时库例外

3.1 版,2009 年 3 月 31 日

版权所有 © 2009 自由软件基金会公司 <https://fsf.org/>

允许任何人复制和分发本许可文件的完整副本,但不允许对其进行更改。

此 GCC 运行时库例外(“例外”)是 GNU 通用公共许可证第 3 版(“GPLv3”)第 7 节下的附加许可。它适用于给定文件(“运行时库”),该文件带有该文件版权持有者的声明,指出该文件受 GPLv3 以及此例外的约束。

当您使用 GCC 编译程序时,GCC 可能会将某些 GCC 头文件和运行时库的部分与编译后的程序组合在一起。此例外的目的是允许编译非 GPL(包括专有)程序,以这种方式使用此例外涵盖的头文件和运行时库。

0. 定义。

如果一个文件在编译过程后需要运行时库才能执行,或者使用了运行时库提供的接口,但并非基于运行时库,则该文件是一个“独立模块”。

“GCC”是指 GNU 编译器集合的版本,无论是否经过修改,均受 GNU 通用公共许可证 (GPL) 的第 3 版(或指定的更高版本)的约束,并可以选择使用 FSF 发布的任何后续版本。

“GPL 兼容软件”是指其传播、修改和使用条件允许按照 GCC 的许可证与 GCC 组合的软件。

“目标代码”是指任何编译器为真实或虚拟目标处理器架构生成的输出,其形式为可执行形式或适合作为汇编器、加载器、链接器和/或执行阶段的输入。尽管如此,目标代码不包括任何用作编译器中间表示形式或用于生成编译器中间表示形式的数据格式。

“编译过程”将完全以人为编写的代码和/或 Java 虚拟机字节码设计的非中间语言表示的代码转换为目标代码。因此,例如,源代码生成器和预处理器的使用不需要被视为编译过程的一部分,因为编译过程可以理解为从生成器或预处理器的输出开始。

如果编译过程是单独使用 GCC 或与其他 GPL 兼容软件一起完成,或者如果没有使用任何基于 GCC 的工作来完成,则编译过程是“合格的”。例如,使用不兼容 GPL 的软件来优化任何 GCC 中间表示形式将不符合合格编译过程的条件。

1. 额外许可的授予。

您有权传播通过将运行时库与独立模块组合而形成的目标代码工作,即使这种传播在其他情况下会违反 GPLv3 的条款,前提是所有目标代码都是由合格的编译过程生成的。然后,您可以根据您选择的条款来传达这种组合,并与独立模块的许可相一致。

2. 不削弱 GCC 的版权。

此例外的可用性并不意味着任何第三方软件不受 GCC 许可证的版权要求的约束。