本文写于2014.8.7,以2014.8.5日发布的chrome 38.0.2114.2版本为例
chromium 在Win7 64位下的编译
为什么写这篇文章
刚开始学习 chrome 浏览器,从下载代码,编译代码开始,查看别人写的文章,好多都不管用,有些是直接转载的碎片,没有加以验证,有些是太久远的文章,chrome更新速度比较快,结构有大的调整,windows下的编译步骤调整很快。
按照本文的步骤,基本可以顺利的编译。
交流chrome联系 QQ:57565929
环境准备
1.操作系统
win7 sp1 64位,必须sp1以上,必须64位,下载地址 提取码 b38e
里面有安装序列号,以及自动激活程序
我的机器环境,关闭UAC,关闭自动睡眠
2.硬件环境
开发chrome对硬件性能要求比较高,为了更流畅的编译调试,我的机器配置应该算是最低配置了。
8G内存,i3-cpu,剩余空间60G以上
3.软件环境
IE10 下载地址 提取码 7d14
VS2013 下载地址 提取码 b593
正常安装,只用勾选C++,其他没有必要勾选,安装完成后,使用里面的序列号重新注册
可选安装,我的机器安装了。使用ninja来编译chrome是最好的选择,自己也试过用vs2013来编译,速度相当慢。Vs2013用来查看和编辑代码,chrome未来肯定只会支持使用ninja来编译。不要对使用vs系列编译抱有幻想,编译速度相当慢。
Ninja的实现是调用depot_tools自动下载的win8sdk和wdk7600的cl,link等程序
SVN 下载地址 提取码 a76b
我的本机装有TortoiseSVN-1.8.7.25475-x64,安装的时候记得要勾选加入环境变量。
如果没有安装的话,depot_tools应该会自动下载svn客户端,没有验证
翻墙必须的!要访问很多google上的资源,翻墙软件povpn下载地址
Git
我的机器没有安装git客户端,depot_tools会自动下载
Python
我的机器没有安装git客户端,depot_tools会自动下载
其他win8sdk(已经包含dx库),dx,wdk7600,没有必要自己安装,depot_tools会自动下载安装,因为ninja必须使用它下载的文件。
编译代码
1) 创建目录 D:\code\chromium
2) 启动povpn,可以正常访问 http://www.chromium.org/Home
3) 下载depot_tools
38.0.2114.2版本对应的depot_tools,使用svn客户端checkout,注意后面的版本号
http://src.chromium.org/svn/trunk/tools/depot_tools 287057
最好使用38.0.2114.2对应的depot_tools版本287057
4) 添加环境变量 path路径后面增加 D:\code\chromium\depot_tools
5) 运行cmd,gclient --version 会自动下载git python程序
6) 再次运行 gclient --version,确保没有错误
7) 这里有一步额外的工作
打开D:\code\chromium\depot_tools\python276_bin\lib\mimetypes.py
跳转到249行
删除以下代码
try:
ctype = ctype.encode(default_encoding) # omit in 3.x!
except UnicodeEncodeError:
pass
如果注册表中有这种类型的键值,会出错,属于python276的bug
8) 创建目录 D:\code\chromium\chromiumtrunk\chrome_38,用来保存源代码
9) 运行cmd,cd D:\code\chromium\chromiumtrunk\chrome_38
10) gclient config http://src.chromium.org/svn/releases/38.0.2114.2
11) 打开 D:\code\chromium\chromiumtrunk\chrome_38下的 .gclient文件,不要关闭cmd
修改 custom_deps 字段
添加
"src/third_party/WebKit/LayoutTests": None, # 800M
"src/chrome_frame/tools/test/reference_build/chrome": None,
"src/chrome/tools/test/reference_build/chrome_win": None, #4G
src/chrome/tools/test/reference_build/chrome_win 目录是google编译的文件,非常大,有4G多,没有必要下载。
12) 在cmd下输入
set GYP_DEFINES=component=shared_library
set GYP_GENERATORS=ninja
如果要生产chrome.sln用来浏览代码,输入set GYP_GENERATORS=ninja,msvs
13) 运行 gclient sync --force
慢慢等待吧,需要很长时间,最好用一个晚上
14) 代码下载完成之后。不要关闭cmd
depot_tools\win_toolchain下是否存在 vs2013_files,不存在的话,说明有问题
15) 打开D:\code\chromium\chromiumtrunk\chrome_38\src\build下的common.gypi
跳转到5244行,禁用以下警告
4819, 4996, 4702, 4067, 4800, 4251
16) 在cmd输入 gclient runhooks
17) 下面开始编译代码,预计2个半小时
在cmd输入 ninja -C out\Debug chrome.exe
Cpu打满,不够用,内存在link的时候达到顶峰,消耗5.3G
可以看到编译时候ninja调用的是depot_tools下的cl和link
18) 运行D:\code\chromium\chromiumtrunk\chrome_38\src\out\Debug\chrome.exe
Debug版本非常消耗内存