为什么 FreeBSD 使用 GPL 许可的 GCC?

为什么 FreeBSD 使用 GPL 许可的 GCC?

为什么 FreeBSD 使用 GCC 作为其默认编译器?

我的印象是 FreeBSD 哲学的核心支柱是不是使用任何 GNU 软件,特别是 GPL 代码。

然而,既是 GNU 又是 GPL 的 GCC 与 FreeBSD 捆绑在一起。

为什么?

答案1

自由BSD 10将使用 BSD 许可的 Clang 编译器而不是用于 32 位和 64 位 Intel x86 系统的 GCC。唯一阻止 FreeBSD 发布的所有 CPU 平台上大规模转换的因素是开发人员的时间和兴趣。

至于 FreeBSD 9——它是即将被释放当这个问题第一次被提出时——有讲话关于将 Clang 作为默认编译器,但它存在足够多的问题,因此他们决定将 Clang 与 GCC 一起发布,并保留 GCC 作为此版本的默认编译器。

至于为什么 FreeBSD 几年前没有尝试转向非 GPL 编译器,甚至可能创建自己的编译器,原因很简单:这很难。

任何计算机科学本科生都可以编写一个编译器——这甚至可能是课程要求——但是编写一个编译器好的编译器很难。当需要为 C 或 C++ 等语言编写一个好的编译器时,就更难了。当您做出新编译器至少需要的合理决定时,任务变得更加困难方法GCC 的性能和能力,背后有几十年的发展价值。

因此,GCC 4.2 仍然是 FreeBSD 9 上的默认编译器。

顺便说一句,GCC 3.4、4.4、4.6、4.7 和 4.8 都在 FreeBSD 9 Ports 树中,并且某些版本的 GCC 可能会在未来很多年中保留在 Ports 中。有很多软件包 - 其中许多都在 FreeBSD Ports 中 - 仅使用 GCC 构建。

答案2

这很可能是出于必要。直到最近,BSD 许可的 C 编译器可能还很少,或者还没有达到与gcc.

FreeBSD 项目目标:

我们的源代码树中属于 GNU 通用公共许可证 (GPL) 或库通用公共许可证 (LGPL) 的代码附带了更多的附加条件,尽管至少在强制访问方面而不是通常的相反方面。然而,由于 GPL 软件的商业使用可能会产生额外的复杂性,因此,当合理的选择时,我们更喜欢在更宽松的 BSD 版权下提交的软件。

相关内容