轻松编译googlechrome浏览器最新稳定版源代码
写在开头
正如⼀位⽹友说的,在这个充满⼤量⼯业垃圾代码的环境,google 开源 chromium的出现⽆疑给这样的环境添加了⼏分艺术⽓息。我对此深有同感,确实,在这个浮躁的⼤环境下,我们产出的⼤部分程序代码,如果要和google这样的顶尖技术公司产出的代码相⽐,说我们⼤部分时间都在编写垃圾代码是不为过的。
但我们不应该为此就感到悲观,毕竟象google这样的公司集聚的是全世界最顶尖的技术天才。我等凡⼈怎能和他们相⽐,就我个⼈⽽⾔只能抱着虔诚的⼼仰视他们的‘艺术作品’。作为技术⼈员,虽然不是每个⼈都可以成为天才,但并不妨碍我们站在巨⼈的肩上让⾃⼰看得更远⼀些。⽽现在的问题仅仅是有没有某种内因或者外因促使你这样去做!
如果你已经厌倦了每天充斥在你眼前⼤量的‘垃圾’代码,不妨把浮躁的⼼平静下来欣赏⼀下‘艺术品’。google chrome浏览器源代码是⼀个很好的开始,虽然其代码⼯程⾮常之庞⼤(可能在你我看来),但这并没有影响它的优雅性。它是⼀座‘⾦矿’,我们的任务是做好发掘⼯作。
编译步骤
做好发掘⼯作的第⼀步就是获取代码并能成功编译调试,我这⾥只谈在windows环境下的编译,我的操作
系统是Windows Server 2008 企业版,其他windows 环境应该没有什么⼤的区别。其实我写此⽂的⽬的可能更多的是加深印象,做个备忘,因为官⽅描述的编译过程已经⽐较清楚了,如果你对官⽅的⽂档描述更感兴趣,请参考。
注意要下载代码并完全编译请准备⾄少10G空闲硬盘空间,你的机器配置越⾼越好。机器配置的好坏直接决定你等待编译的时间长短。
我这⾥仅仅是把步骤简化整理如下:(注意准备⾄少10G的)
1.安装Visual Studio 2008、安装、安装vs2008 sp1补丁的补丁  ; 和注意KB971092补丁⽐较⼤,共300多M。
2.安装,最好下载ISO镜像版,要⼩很多。注意Windows 6.1 SDK 在39982的修订版本之后将不再⽀持。项⽬版本和⽇值情况可以到查看。安装完成后,在开始菜单中选择Windows SDK Configuration Tool和vs2008整合集成。
3.获取安装depot_tools⼯具,这是google⾃⼰⽤python封装的svn代码获取客户端⼯具,下载并解压到⽐如d:/depot_tools⽬录。将depot_tools⽬录路径加到PATH环境变量。然后新建环境变量GYP_MSVS_VERSION=2008,这个环境变量的⽬的就是最终⽣产vs2008的⼯程类型。
4.下载代码,在⽐如D:建⽴⼀个chromium的⽬录,然后命令⾏cd到该⽬录,明确你需要下载的版本,⽐如在我写此⽂的时候官⽅最新发布的稳定版为4.1.249.1059,我要下载此版本的源代码,先在d:/chromium⽬录执⾏
gclient config /svn/releases/4.1.249.1059
该命令并没有真正下载代码,⽽只是做⼀个客户端配置⼯作,注意由于第⼀次运⾏gclient,依赖的python和svn⼯具可能还没有安装,此时gclient会⾃动下载并安装,因此你不必单独事先安装svn客户端和python。你可以在窗⼝上看到正在安装python和svn的进度提⽰,你只需要等待,如果中途出错,只需要再次执⾏上述命令即可。注
意gclient config命令只需要执⾏⼀次,除⾮你需要同步其他版本的代码⽽改变了配置路径。该命令完成之后,再执⾏
gclient sync --force
就开始同步下载代码了,现在的任务就是等待,根据你的⽹络情况,可能需要下载半天到⼀天以上不等,如果中途出错,只需要重新执⾏gclient sync –-force,会⾃动接着上次的下载。注意⼀定要加--force参数选项,否则可能下载不齐全。
chrome直接下载
5.编译代码,如果⼀切顺利,gclient sync –force执⾏完后,所有代码完全成功下载,并且⾃动⽣成了vs2008的解决⽅案⼯程⽂件,现在直接打开
d:/chromium/src/chrome/chrome.sln解决⽅案⽂件,把chrome设置为启动⼯程,在chrome⼯程上点击右键选择build开始编译即可。根据你机器的配置情况,需要等待20分钟到2个⼩时以上不等,我在新购T410(I7 CUP、4G内存、7200转500G硬盘)笔记本上,编译了40分钟。
6.运⾏chrome,编译完成后,总共有将近200个依赖⼯程,最终会在chrome/debug⽬录下⽣成和相关⽂件。在vs2008中直接F5运⾏,然后在浏览器地址栏输⼊‘about:’ 回车核实版本号。如果显⽰:
Chromium
4.1.249.1059 (开发⼈员内部版本 44723)
WebKit
532.5
V8
1.3.18.22
User Agent
Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1059 Safari/532.5
恭喜你,版本完全正确!注意我是以写此⽂的时候的最新版为例,你只需要和当时最新发布的安装版chrome对⽐即可。
总结
整个过程是很顺利的,google把相关的⼯作做得⾮常完美了,不需要涉及到⼤量复杂的配置⼯作。chrome的开源算是google对开源界⼀个很⼤的贡献吧。gclient是google⾃⼰封装的⼯具,其本质是调⽤svn,额外的⼯作主要在于google代码仓库⽤DEPS⽂件来描述项⽬版本之间的依赖关系,gclient会解析DEPS⽂件并下载对应版本的依赖库,这是⼀个循环过程。有兴趣可以参考depot_tools⽬录下相关python脚本的实现过程。如果你想下载最新开发版,注意不要直接配置为,这个下载下来很可能⽆法成功编译,因为主⼲上的代码随时在提交修改,没有release,所以⼀定要下载有release的,⽐如5.0.387.0。整个⼯程⾮常庞⼤,由此可以看出做⼀个真正优秀的浏览器是多么不容易。代码中包括了we
bkit html解析、css解析、v8 js引擎实现、skia图形处理、安全技术、⽹络、数据库、NPAPI插件框架、扩展框架、多进程、多线程等等技术主题,如果你对某⽅⾯感兴趣,不妨对这些艺术性的代码进⾏研究学习。当然对这样庞⼤的开源项⽬进⾏分析学习是要讲⽅法和毅⼒的,后续我也会对此作相关的分析和讨论。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。