Chrome Visual Studio 2005下的编译过程

编译篇
研究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 工具。

l  下载和安装 depot_tools 。

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

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

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

l  运行 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 是你的安装盘符。

2. 将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);

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 的官网上:

Building Chromium

1  Open the  chrome/chrome.sln  solution file in Visual Studio and build the solution. This can take from 25 minutes to 1 hour.

2  If you just want the Chromium browser, and none of the tests, you can speed up your build by right-clicking the  chrome  project in the solution explorer and selecting  Build . You may want to make sure this project is the  Startup  project (which will display as bold) by right-clicking it and selecting  Set as Startup Project . This will make Chromium (as opposed to some random test) build and run when you press  F5 .

来看,似乎没有更新。最后在线翻阅了chrome 的开发 group 论坛,才知道 Chrome 确实作了修改,原来代码中的那些 .sln 、 .vcproj 文件全部抛弃了, google 自己开发了一个脚本工具 GYP 工具,这个工具也是采用python 编写的。 GYP 采用了自定义的一套规则,用于生成各种工程文件。我们可以看一下下面这个gyp 文件。

{

'includes': [

'../../build/common.gypi',

],

'targets': [

{

'target_name': 'memory_watcher',

'type': 'shared_library',

'msvs_guid': '3BD81303-4E14-4559-AA69-B30C3BAB08DD',

'dependencies': [

'../../base/base.gyp:base',

],

'defines': [

'BUILD_MEMORY_WATCHER',

],

'include_dirs': [

'../..',

],

'sources': [

'call_stack.cc',

'call_stack.h',

'dllmain.cc',

'hotkey.h',

'ia32_modrm_map.cc',

'ia32_opcode_map.cc',

'memory_hook.cc',

'memory_hook.h',

'memory_watcher.cc',

'memory_watcher.h',

'mini_disassembler.cc',

'preamble_patcher.cc',

'preamble_patcher.h',

'preamble_patcher_with_stub.cc',

],

},

],

}

其实这个文件的内容和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 个工程,非常庞大。

右键选择解决方案,选择生成解决方案,编译开始了。这个过程在我的本本里是持续了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 方式方面花了不少力气。

(0)

相关推荐

  • Chrome Visual Studio 2005下的编译过程

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

  • 学会区分Visual Studio 2005,Visual Studio 2005 Team System和MSDN Premium 订阅的各个版本

    Mohammad Akif用图示的方法,说明了Visual Studio 2005所有的产品家族和之前的区别. 475)this.width=475;"> 大家应该了解一些Visual Studio 2005的版本和和功能,学会选择合适的版本,不仅是开发人员,也是每个开发主管应该掌握的常识. 交流的过程中,发现对Visual Studio 2005, Visual Studio 2005 Team System 家族和MSDN Premium subscriptions 版本之间的关系许多

  • 解决Visual Studio 2005 无法显示设计视图的方法

    Visual Studio 2005 无法显示设计视图的解决方法 你们有没有碰到过这样的情况,在用VS2005开发的时候,点击设计视图没有用,怎么点击都看不到设计页面,前段时间为这个被这个问题郁闷了好久,一直的解决方法都只是重新安装,VS2005那么庞大,每次重新安装都要花费我很长的时间,后来在在网上找解决的办法,功夫不负有心人总让让我找到了,现在我把解决办法写下来,大家碰到这样的问题就不用再这么辛苦了. 首先你要确定你的HTML代码没有问题,因为在Visual Studio 2005 中内置的

  • MSN Messenger 化繁为简(用 Visual Studio 2005 去掉 MSN 广告)

    本人用的 MSN Messenger 版本是 8.1 其界面比较复杂,精简方法如下: 1.去广告:用 Visual Studio 2005 *注意:先备份 msgsres.dll 把 MSN Messenger 安装目录下的资源文件 msgsres.dll 拖到Visual Studio 2005工作区,显示如下: ►去掉聊天窗口最下方的广告: 打开 4004号资源,双击920,CTRL+F 查找 "<Element layoutpos=bottom layout=borderlayout

  • Microsoft Visual Studio 2010下如何添加命令提示行

    下面给大家介绍Microsoft Visual Studio 2010下添加命令提示行的方法,希望对大家有所帮助. 部分VS2010软件中不存在命令提示行选项,对于这种情况可以通过外部工具进行添加,步骤如下 工具->外部工具 打开外部工具后自行进行添加,参数如下 其中需要注意的是参数一栏 /k "D:\c#\VC\vcvarsall.bat" 参考本文配置的读者可根据各自VS2010的安装目录情况进行修改. 解决这个问题后即可打开VS下的命令行模式.

  • Visual Studio 2019下配置 CUDA 10.1 + TensorFlow-GPU 1.14.0

    环境 Windows 10 64位 Visaul Studio 2019 Anaconda 1.9.7 Python 3.7 CUDA Toolkit 10.1.120 CUDNN 7.6.1.34 TensorFlow-GPU 1.14.0 1. 安装 Visual Studio 2019    VS号称宇宙最强IDE,接触以来从未让人失望过,可直接在官网下载. 从 Visual Studio 2017 开始,就集成了Python模块用于对机器学习的支持,其安装方式也新增了在线安装,安装时可以

  • Visual Studio 2017下ASP.NET CORE的TagHelper智能提示解决办法

    之前在VS2017RC中就发现该问题,安装了依赖,但是前段一直点不出来asp-for,后来查了发行说明, 才知道在VS2017rc中暂时无法解决,所以一直等到VS2017正式版的发布,急冲冲的装好, 建了一个demo项目,还是无法出现TagHelper的智能提示. 不死心,我又去扒拉了一下VS2017的发行说明,找了一下已知问题: 发现有这一行: 然后我根据提示,进入到Github页面,果然找到了TagHelper为何不能使用的描述: 同样,页面给出来了解决办法,安装一个Razor服务的扩展:

  • visual studio 2015下boost库配置教程

    因为我也是第一尝试配置,所以有很多不懂得地方,上网找的教程又很多都是老版本的VS,比如VS2010 VS2012又或者Boost1.54之类的. **我根据自己的配置情况给大家一个建议.** 仅给有需要的人以参考用,如有不合适的地方,敬请纠正 首先,我们需要下载一个Boost库. 这个直接去他的官网下就可以了:boost下载地址 下载好后解压到一个目录里.比如我解压到D盘根目录 然后我们打开[开始菜单]->[找到你对应版本的vs命令窗口,比如我是vs2015的]P.s:一定要对应自己的VS版本

  • 在Visual Studio Code中配置C++编译环境的问题

    目录 一.简介 二.准备工具 三.配置文件 一.简介   大学期间用的C++编译环境一直是Visual Studio 2010,最近碰到了一个赛题,需要用C++11的环境,且给了基础代码.基础代码在Visual Studio 2010不能成功运行,显示以下错误:   后经查询,是因为Visual Studio 2010 至 2013这几个版本仅支持部分的C++11特性,所以报错,又想到Visual Studio Code和其都是一家,也有很多人推荐,就想着能不能通过它来实现C++环境的编译,毕竟

  • 关于CLion配置visual studio(msvc)和JOM多核编译的问题

    目录 安装visual studio(msvc) JOM 多核编译 安装visual studio(msvc) 如果你只是开发Window平台的软件时, 最好使用MSVC,这样可以使用大量的第三方lib,还有很多的构建指令,毕竟window上MSVC才是王道.从Visual Studio官网下载Visual Studio 社区版(注意需要2019版本或以下) 官网下载地址: https://visualstudio.microsoft.com/zh-hans/downloads/ 如果下载不了的

随机推荐