Chrome编译

编译篇

  研究Chrome,首先得把它编译出来,这对于后续的代码分析和阅读有很大的帮助,想想自己编译出一个Chrome浏览器来使用,那是一件很开心的事情。
编译环境准备
   Chrome的编译和WebKit相比起来,难度上来说,简直是一元二次方程求解和偏微分方程求解的对比(我到现在还没有完整的把WebKit编译出来, 鄙视一下自己)。虽然Chrome也是从WebKit演进过来,差不多也就是把WebKit的JS引擎替换成了V8。但是不得不承认Google把 WebKit的编译难度降低了几个数量级。

   言归正传,Chrome官方网站上公布的是基于Visual Studio 2005进行编译,网上也有兄弟基于Visual Studio 2008编译成功过,但我手头上没有Visual Stdio 2008,所以无从得知。本文也是以Visual Studio2005环境为例。我曾经在自己家里的电脑上用Visual C++ 2005 Express版本编译过,没有成功。在XP Professional和Vista Home两个操作系统上均编译成功。

   在下载Chrome代码前,需要安装下面几个软件:

   1. 安装Visual Studio 2005.

   2. 安装 Visual Studio 2005 Service Pack 1 .

   3. 安装热补丁 Hotfix 947315 .

   4. 如果操作系统是Vista,还需要安装 Visual Studio 2005 Service Pack 1 Update for Windows Vista

   5. 安装 Windows 2008 SDK 。按照网上说法,如果是Visual Studio 2008,就不需要安装这个了。

   6. 配置Windows 2008 SDK。在开始->程序->Microsoft Windows SDK v6.1 > Visual Studio Registration > Windows SDK Configuration Tool.。选择make current按钮,幸运的话,应该能一次成功。如果不能成功,Chrome官方网站上有一个 手动配置 的帮助,大家可以参考。
下载代码
   Google为Chrome提供了一个一个部署工具 depot_tools ,包括下载代码、同步代码、上传代码等功能。这个工具采用Python编写的,其中还包含了一些Javascript脚本。 depot_tools 中包含了一个gclient工具,是我们需要关注的重点。

   下载代码有几种方式:

   1. Chrome官网上提供了一个 源代码包 ,可以直接下载下来。不过这个包并不是最新的包。我采用的是这种方法进行下载的,相对来说比较快。

   2. 采用SVN客户端工具进行下载,比如TortoiseSVN客户端工具,SVN服务器地址是http://src.chromium.org/svn/trunk/src。

   3. 采用google提供的 depot_tools 工具。

    (1) 下载和安装 depot_tools

    (2) 把depot_tools的安装目录设置到系统目录(系统Path环境变量)中。

    (3) 创建一个存放Chrome代码的目录,比如d:/chrome。目录不要包含空格。

    (4) 在命令行下,先将当前目录切换到chrome代码的目录,例如上面的(d:/chrome)。

    (5) 运行gclient config http://src.chromium.org/svn/trunk/src命令。Gclient将会先下载svn工具和python工具,然后调用svn进行代码同步。

   注意:gclient中下载svn和python采用的是javascript实现。如果在需要设置proxy的环境中,则需要需要修改一下脚本。

   1.打开X:/depot_tools/bootstrap/win/get_file.js文件。其中X是你的安装盘符。

   将Line9-Line22行之间的代码

  try {

    xml_http = new ActiveXObject("MSXML2.ServerXMLHTTP");

  } catch (e) {

    WScript.StdOut.WriteLine("[-] XMLHTTP " + new Number(e.number).toHex() +

        ": Cannot create Active-X object (" + e.description) + ").";

    WScript.Quit(1);

  }

  try {

    xml_http.open("GET", url, false);

  } catch (e) {

    WScript.StdOut.WriteLine("[-] XMLHTTP " + new Number(e.number).toHex() +

        ": invalid URL.");

    WScript.Quit(1);

  }

修改成

try {

    xml_http = new ActiveXObject("MSXML2.ServerXMLHTTP.5.0 ");

  } catch (e) {

    WScript.StdOut.WriteLine("[-] XMLHTTP " + new Number(e.number).toHex() +

        ": Cannot create Active-X object (" + e.description) + ").";

    WScript.Quit(1);

  }

  try {

    xml_http.setProxy(2, proxyIP:Port); //Proxy IP和Port

    xml_http.open("GET", url, false);

    xml_http.setProxyCredentials(username,pwd); //用户名和密码

  } catch (e) {

    WScript.StdOut.WriteLine("[-] XMLHTTP " + new Number(e.number).toHex() +

        ": invalid URL.");

    WScript.Quit(1);

  }
编译代码

   如果你是下载的源代码包,则需要先解压,这个代码包是双重压缩。估计要把所有代码解压下来,半个小时左右,我在我的本本上是花了将近半个小时时间才解压出来,解压下来所有代码的大小是3个多G。

   从网上搜索了很久相关Chrome编译相关的材料,大家都反馈在src/chrome目录下有chrome.sln文件,直接打开这个sln就可以利用 Visual Studio 2005进行编译了。但是我翻遍所有代码却找不到这个文件,让我郁闷了很久,开始怀疑是我下的代码版本问题,在线查看了Chrome的SVN目录,发现最 新版本也没有这个文件了。检查一下网上的那些文章基本上都是2008年的文章,开始怀疑是否是chrome做了改变,但是从chrome的官网上来看,似 乎没有更新。最后在线翻阅了chrome的开发group论坛,才知道Chrome确实作了修改,原来代码中的那些.sln、.vcproj文件全部抛弃 了,google自己开发了一个脚本工具 GYP 工具,这个工具也是采用python编写的。 GYP 采用了自定义的一套规则,用于生成各种工程文件。


   其实这个文件的内容和visual studio 2005中的.vcproj文件虽然有比较大的差别,但是描述的东西没有太大变化,更简单更简洁一些而已。无非描述了工程的文件,编译设置等内容。

   下面描述一下编译步骤:

   1. 运行命令行工具。

   2. 切换到Chrome主目录下(我的电脑是d:/chrome目录)。

   3. 执行gclient runhooks --force。这个命令将会调用GYP工具,对Chrome.gyp进行解析,生成各个Visual Studio2005工程文件。

   4. 双击chrome/chrome.sln文件,即可打开Visual Studio 2005,一共有215个工程,非常庞大。

   5. 右键选择解决方案,选择生成解决方案,编译开始了。这个过程在我的本本里是持续了2个小时左右,CPU前一个多小时都是持续100%,害得我连看电影都卡 的不行了。编译后的文件放置在chrome/debug目录下(我编译的是debug版本)。整个编译下来,Debug目录增加了将近7个G的东东,实在 是恐怖!要编译Chrome,至少要保留10个G的空间。

总结
   整个编译Chrome的过程说实话还是花了我不少的力气,不过看着编译出来的chrome,心里还是很happy的。

   在我编译的过程中主要遇到的几个问题:

   1. 公司有Visual Studio2005,可是因为Proxy的原因,depot_tools工具无法进行,为了突破proxy的限制,花了不少力气。

   2.Chrome工程组织方式发生了变化,但在官网上没有更新,网上其他的资料都是基于旧的版本介绍,所以在适应新的gyp方式方面花了不少力气。
转自:http://blog.sina.com.cn/s/blog_557946010100ecu0.html
http://www.it.com.cn/f/edu/089/4/653005.htm
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值