在 Win7 下使用 VS2005 编译 Chrome
Chrome 是浏览器的新秀,无论从启动速度、Js 执行速度、更新速度来说,都是最佳的。最主要的是,Chrome 还是开源的,拿来研究一定不错。本文所编译的 Chrome 版本为 Revision:49506(2010.06.11),Chrome 在 Google 内部的开发名是 Chromium,如下都是用开发名 Chromium。
本文先讲述怎样准备编译环境,然后下载官方代码,最后进行编译。
一、准备编译环境
从官网上知道, Chromium是可以使用 VS2005 进行编译的,所以本文也将使用 VS2005 进行编译,操作系统为 Windows 7。
无论编译什么类型的代码,第一步都是准备编译环境,编译 Chromium,需要安装如下软件(建议按步骤安装):
1、Visual Studio 2005 Team Suit ENU。
2、Visual Studio 2005 Service Pack 1:http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=bb4a75ab-e2d4-4c96-b39d-37baf6b5b1dc
3、安装补丁 Hotfix 947315:http://code.msdn.microsoft.com/KB947315/Release/ProjectReleases.aspx?ReleaseId=872
4、安装补丁 Hotfix 949009:https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=18623
5、如果操作系统是 Vista,需要安装 Visual Studio 2005 Service Pack 1 Update for Windows Vista:http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=90e2942d-3ad1-4873-a2ee-4acc0aace5b6
6、安装 Microsoft Windows SDK7(Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1):http://www.microsoft.com/downloads/details.aspx?FamilyID=c17ba869-9671-4330-a63e-1fd44e0e2505
7、配置 Microsoft Windows SDK7:开始菜单 à 所有程序 à Microsoft Windows SDK v7 à Visual Studio Registration à Windows SDK Configuration Tool,在上边 Install Windows SDK Versions 右边的下拉框中选中“ v7”,在 Select Visual Studio Versions 中选中“Microsoft Visual Studio 2005”,最后点击“Make Current”即可(在弹出的对话框中选择确认)。
二、下载代码
Google 为 Chromium提供了一个源码下载管理的工具,名为:depot_tools:http://sites.google.com/a/chromium.org/dev/developers/how-tos/install-gclient 。此工具包含了下载代码、上传代码、生成 VS 认识的 vcproj、sln 文件的功能。虽然可以直接使用 SVN 取到 Chromium 的代码,但建议使用 depot_tools 在命令行下进行操作,以避免一些不可预知的问题。
下面开始取源代码:
1、解压 depot_tools 到一个目录(通常可以放到C:/Program Files),并删除其所有 .svn 文件夹。
2、将 C:/Program Files/depot_tools/ 目录加入到系统环境变量的 PATH 中。
3、在其他磁盘新建一个目录,用于存储 chromium 的源代码。本例中为:E:/chromium_svn。
4、打开 CMD 命令提示符,切换到 E:/chromium_svn 目录。
5、执行命令设置好源码下载地址 gclient config http://src.chromium.org/svn/trunk/src
6、输入 gclient sync 下载源码。
第 5 步骤需要较长的时间,在下载过程中,有可能出现卡死现象(当下载过程长时间不响应,断定为卡式,关闭CMD,重新执行第五步的命令),我的整个下载过程使用了4小时。gclient sync 在完成代码下载后,会将 google 源代码配置文件(后缀名为gyp、gypi的文件)转换为 vcproj、sln 文件,这也是为什么使用命令行下载代码比较方便的原因之一。
如果你 chromium/src/chrome 目录下不存在 chrome.sln 文件,原因是没有彻底执行 gclient sync,执行一次即可。如果你不想下载代码,只想生成 chrome.sln,可以执行 gclient runhooks –force。
源代码下载完成之后,整个 Chromium_svn 有 3GB 大小,真实源码大概 1.5GB 左右,还有另外 1.5GB 是 SVN 配置文件的大小。
三、编译代码
去到目录,打开e:/chromium_svn/src/chrome/chrome.sln 便可以进行编译了,本例中我们编译 Debug 版本,打开环境后,如何进行编译就不用说了吧。如下有几个需要注意的地方:
1、如果VS2005中加载了 Visual Assist,当 Visual Assist 没有处理完之前,尽量不要对 VS2005 做任何操作(包括编译),防止 Visual Studio 卡死现象,Visual Assist 处理完成所有代码大概需要 30 分钟左右。
2、打开 VS2005 后,VS的IntelliSense 功能便开始运行了,整个运行过程长达1小时,个人建议禁止VS IntelliSense 运行,具体的方法可见本博客转载的另一篇文章 《去掉Visual Studio 2005的IntelliSense功能》 。
3、打开整个 Chromium 工程需要占用 500MB 的内存空间,编译过程至少需要500MB(不包括VS2005占用的内存),有时会高达 900MB,建议编译机器内存配置为 2GB 或以上。
我的CPU是Intel E5300,耗时5小时,总共编译370个工程。最后有个unit_tests 工程由于unittest_data.h文件编码问题编译失败,由于这是一个单元测试工程,可以不予理睬。
编译完成后,生成的文件夹(e:/chromium_svn/src/chrome/Debug/文件夹)大小达 13.5GB,包括源码文件的话,整个文件夹高达 17GB,建议编译前,确保磁盘拥有不少于20GB的空闲空间。
---------------------------------------
1、如果没有安装补丁Hotfix 947315,打开 chrome.sln 时,有可能出现卡死现象,是由于VS2005的Intelligense功能导致的。
2、如果没有安装补丁Hotfix 949009,编译过程中可能会出现错误“uuid.lib(shguids2.obj) : fatal error LNK1103: debugging information corrupt; recompile module”,如提示所说,重新编译模块并不能解决问题。
3、如果没有安装 Microsoft Windows SDK 7 或者没有 make current 绑定编译器为 VS2005,则编译过程中会出现很多编译错误,大多是宏没有定义,头文件不存在之类的。
http://blog.csdn.net/xt_xiaotian/article/details/5672454