GCC 要求¶
WebKit 是一个复杂的 C++ 库,通常需要相对较新的 GCC 版本才能构建。较旧的 GCC 版本往往存在阻止代码成功编译的错误,这些错误通常会在较新的 GCC 版本中修复,并且在 WebKit 开发人员的实践中经常遇到。Apple 也喜欢能够较早地使用新的 C++ 特性,而这些特性通常在旧版 GCC 中不存在。
我们知道 Linux 发行版和嵌入式系统供应商喜欢使用相同的系统构建工具链(可能非常旧)来编译所有内容,因此我们与 Apple 达成了妥协,制定了一项依赖策略,旨在平衡 WebKit 分发商和开发人员的利益。我们计划支持最新 Ubuntu LTS 和 Debian 稳定版中的某些系统编译器,直到其后续版本发布一年后。但根据发布时间,这可能是 Clang 的某个版本而不是 GCC。我们不再提供任何特定 GCC 版本可能支持多长时间的时间表,因为此决定将由 WebKit 开发人员根据具体情况而定。但是,我们始终会支持这些版本中可用的 libstdc++ 版本,直到其后续版本发布一年后。即使使用较新的编译器来构建更新,保留与旧版标准库的兼容性对于在旧系统上进行更新也是必要的。通常,根据依赖策略,您可以预期 WebKit 将支持新的标准库版本大约三到四年。
这项策略意味着 WebKit 可能比您希望的更早地需要新版本的 GCC。由于 Apple 不使用 GCC 开发 WebKit,并且由于支持 GCC 导致的兼容性问题相对较多,我们应该庆幸仍然可以使用 GCC 构建 WebKit。除非您能够定期将系统升级到较新的 GCC,否则您的系统 GCC 可能不足以构建 WebKit。如果您的系统编译器太旧,我们建议您考虑使用不同的编译器进行构建。如果更新主机的 libstdc++ 不受欢迎,嵌入式系统供应商可以选择在容器中部署 WebKit。如果您因 GCC 或 libstdc++ 版本要求提高而选择停止构建新版本的 WebKit,您的用户将面临在较新版本中修复的众多安全漏洞。