首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Windows上的Chrome也将使用Clang编译器

LLVM龙徽标,以纪念龙书

Google如今正在windows平台上构建使用Clang编译器的Chrome浏览器。以前Chrome是使用Microsoft C ++编译器构建的,但是现在Google对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还具有ASanUBSan等诊断工具。

但是有一个小小的问题:Clang和LLVM在Windows支持方面并没有太大的成效。例如,Clang与微软编译器使用的是不同的命令行选项,因此无法被用作替代品,因为其学习成本太高。同时clang以深层次的方式在操作进行,例如,Windows的工具都是围绕PDB(“程序数据库”)文件格式构建的,用于保存调试信息。微软的调试器和广泛的第三方工具都认定Windows程序将其调试数据作为PDB文件提供。然而,LLVM不能生产PDB。这与几乎所有大型软件项目改版一样,Windows API也需要将某些非标准扩展,Clang必须改变以支持。

因此,使Chrome在Windows上使用Clang的第一步是改进Clang和LLVM,为他们提供对Windows的支持。谷歌组建了一个团队来处理这个问题。该浏览器于2015年首次在Windows上使用Clang成功构建,Google首先在Canary开发渠道,开发版和测试版渠道中对其进行了测试。借助Chrome 64这款稳定的浏览器可以开始使用Clang。

虽然谷歌在编译器开发方面做了很多工作,但一些必要的工作却必须是由微软完成的。PDB格式在很大程度上没有被记录(并且存在的文档非常陈旧),因此LLVM开发人员向微软寻求帮助:请求Microsoft发布了大量用于生成PDB的源代码。微软还努力确保Windows头文件和C ++库能与Clang以及它自己的编译器一起工作。

Google尚未完全转移到LLVM工具链。Chrome for Windows仍然使用的是Microsoft链接器(将编译后的源代码组合到单个可执行文件或DLL中的工具链的一部分),它仍然使用的是Microsoft C ++库。Google计划将来会切换到LLVM链接器,并且可能还会使用Clang C ++库。

  • 发表于:
  • 原文链接https://arstechnica.com/gadgets/2018/03/chrome-on-windows-ditches-microsofts-compiler-now-uses-clang
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券