War*_*ung 13
对于 32 位和 64 位 Intel x86 系统,FreeBSD 10将使用 BSD 许可的 Clang 编译器而不是 GCC。唯一阻止在 FreeBSD 发布的所有 CPU 平台上进行大规模切换的是开发人员的时间和兴趣。
至于 FreeBSD 9——当这个问题第一次被提出时即将发布——有人谈论过让 Clang 成为默认编译器,但有足够多的问题,他们决定将 Clang 与 GCC 一起发布,并让 GCC 成为默认编译器对于此版本。
至于为什么 FreeBSD 几年前没有尝试转向非 GPL 编译器,或者甚至创建自己的编译器,原因很简单:很难。
任何本科 CS 学生都可以编写编译器——这甚至可能是课程要求——但编写一个好的编译器很难。当需要用于像 C 或 C++ 这样的语言时,编写一个好的编译器更难。当您做出合理的决定,即新编译器至少需要接近GCC 的性能和能力时,任务变得更加困难,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 构建。
小智 8
很可能是迫不得已。直到最近,BSD 许可的 C 编译器可能很少,或者没有接近与gcc
.
我们源代码树中属于 GNU 通用公共许可证 (GPL) 或库通用公共许可证 (LGPL) 的代码附带了更多的字符串,尽管至少在强制访问方面而不是通常的对面。然而,由于 GPL 软件的商业用途可能会带来额外的复杂性,我们更喜欢在更宽松的 BSD 版权下提交的软件,因为这是一个合理的选择。