您的位置:首页 > 社会 >正文

Windows上的Chrome抛弃了微软的编译器现在使用Clang

发布时间:2022-01-04 10:38:27  编辑:  来源:

导读 2022年1月4日整理发布:Google 的 Chrome 浏览器现在是在 Windows 上使用 Clang 编译器构建的。以前使用 Microsoft C++ 编译器构

2022年1月4日整理发布:Google 的 Chrome 浏览器现在是在 Windows 上使用 Clang 编译器构建的。以前使用 Microsoft C++ 编译器构建,谷歌现在在 Windows、macOS、Linux 和 Android 上使用相同的编译器,而这一转换使 Chrome 可以说是第一个在 Windows 上使用 Clang 的主要软件项目。

长期以来,macOS 和 Linux 上的 Chrome 都是使用 Clang 编译器和 LLVM 工具链构建的。开源编译器是 macOS 上的首选编译器,使其成为那里的自然选择,也是 Linux 的首选;尽管古老的 GCC 仍然是 Linux 上的主要编译器选择,但通过使用 Clang,Google 确保它只有一组编译器的怪癖和奇怪之处,而不是两组。

但是 Windows 上的 Chrome 使用了微软的 Visual C++ 编译器。Visual C++ 编译器是 Windows 上支持最好、使用最广泛的编译器,而且至关重要的是,它是对 Windows 的各种调试和诊断工具提供最佳支持的编译器。Visual Studio 调试器受到 C++ 社区的广泛喜爱,其他工具,例如 WinDbg 调试器(通常用于分析故障转储)是 Windows 开发人员体验的核心部分。

早在 2013 年,Google 就决定要在任何地方使用 Clang,包括 Windows。在任何地方使用相同的编译器使开发变得更加容易——你在每个平台上都有相同的错误集要处理——尤其是 Clang 有谷歌希望能够使用的诊断工具,如ASan和UBSan。

只有一个小症结:Clang 和 LLVM 对 Windows 支持的影响并不大。这在表面上是正确的——例如,Clang 支持与 Microsoft 编译器不同的命令行选项,因此不能作为替代品——以及许多更深层次的方式。例如,Windows 的工具都是围绕 PDB(“程序数据库”)文件格式构建的,用于保存调试信息。Microsoft 的调试器和各种第三方工具都假定 Windows 程序将其调试数据作为 PDB 文件提供。但是,LLVM 无法生成 PDB。与几乎所有大型软件项目一样,Windows API 也需要某些非标准扩展,必须对 Clang 进行更改才能支持。

因此,让 Chrome 在 Windows 上使用 Clang 的第一步是改进 Clang 和 LLVM,为它们提供对 Windows 的一流支持。谷歌组建了一个团队来解决这个问题。该浏览器于 2015 年首次在 Windows 上使用 Clang 成功构建,谷歌首先在其 Canary 开发渠道中对其进行了测试,然后是开发和 Beta 渠道。在 Chrome 64 中,稳定的浏览器渠道正在转向使用 Clang。

虽然谷歌为实现这一目标在编译器开发方面承担了大部分责任,但一些必要的工作是由微软完成的。PDB 格式在很大程度上没有记录(并且存在的文档非常陈旧),因此 LLVM 开发人员寻求帮助:微软的回应是发布了大量用于生成 PDB 的源代码。Microsoft 还努力确保 Windows 头文件和 C++ 库与 Clang 及其自己的编译器一起使用。

Google 尚未完全迁移到 LLVM 工具链。Chrome for Windows 仍然使用 Microsoft 链接器(工具链的一部分,将编译后的源代码组合成单个可执行文件或 DLL),并且仍然使用 Microsoft C++ 库。随着时间的推移,Google 计划切换到 LLVM 链接器,并且也可能使用 Clang C++ 库。

标签:
免责声明:本文由用户上传,如有侵权请联系删除!
版权声明:本站若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢您的支持与理解。转载文章是出于传递更多信息之目的。
版权所有:阜新生活网 ·(2019-2024)