chrome代码的编译和调试(全部过程经本人亲自验证)
在我干过的项目工程中,代码量及工程量能比得上chrome的目前还没有,(ps,原谅我,我没有编译过windows,哪怕是98,只是曾经编译过一版dos),正好项目组要做一版chrome浏览器插件,索性拉取了最新的chrome代码,利用仅有的机器资源,编译了一版chrome工程,编译过程虽然难度不大,但对环境要求还是比较苛刻的,而且比较耗时,作为心得简单记录一下,以备查阅,也能方便同行作为编译攻略使用。
系统准备:
chrome最新的代码(人家官方叫Chromium),官网上要求,在windows上,必须使用win7的系统,64位的(32位系统不是不行,而且根本无法运行如此大的工程,我曾经尝试过,每次都是工程把机器干死机了为止),最好8G以上内存,我建议16G以上吧,8G可以编译,但调试起来,很容易把vs调试器干死掉,硬盘最低要求200G吧(最好是ssd硬盘,这样编译及调试过程,会顺畅一些),还有 Visual Studio 2013 Community sp5版 或者 Visual Studio 2013 Professional sp5版,同时一定要安装window 10 sdk,及最新版的directx sdk,这些都去官网上下吧,各个下载站上的不靠谱,骗子太多,而且官网也不慢。安装好了吗,安装好了继续往下看,没安装好,请自行继续安装。
(附chrome官网地址:http://www.chromium.org/developers/how-tos/build-instructions-windows)
看到这里的时候,系统准备已经基本就绪了,先别着急,还有一点,需要做,调整你电脑的语言,控制面板->区域和语言->非unicode程序所使用的当前语言,请修改为英语(美国),ok了吗,继续~
开始下chromium的代码,请使用google提供的代码下载工具,depot_tools(从官网上下载吧,一个压缩包,解压即可使用),下载下来以后,解压到你所希望它在的位置,然后设置系统环境变量path,把depot_tools设置进系统路径(我的是D:\depot_tools\,咋?不知道怎么设置,系统属性->高级->环境变量,不知道这个咋设置,建议您别往下进行了,后面的难度不适合您玩),既然打开环境变量了,索性把以后用到的环境变量,都设置一下吧,如下,照着做就好,不用问为什么
set DEPOT_TOOLS_WIN_TOOLCHAIN = 0
set GYP_DEFINES=branding=Chromium buildtype=Dev component=shared_library disable_nacl=1
set GYP_GENERATORS=msvs-ninja,ninja
set GYP_MSVS_VERSION = 2013
set set BUILDTYPE=Release(或Debug,可以生成sln时再在命令行设置设置)
好了吗?继续~
打开一个命令行窗口(最好以管理员权限打开,win7上叫提权),运行一个命令:
gclient
这个命令会会自行下载python,git,svn等等依赖工具,即使你机器原来装了,也再装一下吧
建一个文件夹,我的叫chrome_build,您随便,但别用中文起
然后命令行执行cd d:\chrome_build,进入到该文件夹,进行源码下载
执行:
fetch chromium
注意,此时请注意盯着屏幕,大概30秒左右,会出现一行提示:sync,即告诉你,要开始同步代码了,这时请ctrl+c,中断该命令,然后敲入下一行命令,回车执行:
gclient sync –no-history –force
这样做,是为了避免下载太多的chromium历史版本,会比较快一些
这个过程会很久很久,看你的网速,大概相当于看5个日本家庭爱情电影的时间(每个1G以上吧),当然你也可以休息,
(5个小时过去了~~~~~~~~~~~~~~~)
去看命令行,代码下载是不是已经执行完了
(ps:请注意如果你是在国内做以上操作,请自行购买vpn,翻墙,免费的vpn越来越少,而且不好使)
假设你代码已经下载完成了,请检查一下chrome_build目前的大小,应该在8G以上,如果小于8G,请继续实行gclient sync –no-history –force ,因为肯定代码没下全
好了,假如此时,经检查,您代码下的比较全,那么恭喜您,可以开始编译了
请在命令行,继续执行cd src,进入到d:\chrome_build\src目录
然后,在src目录下,执行以下命令:
gclient runhooks –force
这个命令,会下载后续编译过程中,需要的东西,并声称vcproject文件,及chrome.sln解决方案,我的经验,这个过程中,可以有warning,但不能用error
命令执行,大概半个小时左右,会在你的d:\chrome_build\src\chrome 目录下,生成所有的vcxproj工程文件,及chrome.sln
请检查有没有chrome.sln,如果有,说明生成好了,如果没有。。。,请检查上面我让你设置的几个环境变量是否已经设置了,什么。。。,忘了设置?请自行掌嘴20下~
好了,此时,终于可以开始编译了,请保持在目前的src目录,执行下面的命令:
ninja -C out/Debug chrome
(如果你是生成的Release工程,请执行ninja -C out/Release chrome),默认生成的是win32的,如果要生成x64的,请在编译前,执行下面命令:
python build\gyp_chromium -Dtarget_arch=x64
好了,这个过程,大概要3-4个小时,继续看片或者睡觉吧~~
buy it 如果编译过程没有出错的话,您会在d:\chrome_build\src\out\Debug\,目录下发现chrome.dll chrome.exe
恭喜您,编译成功!
click here 什么,你想用vs 2013来编译,不想用ninja命令行来干,好像很麻烦,vs 2013编译,要自行修改一些设置和部分代码,至少最新版是这样,所以还是老老实实的用ninja命令行来干吧
编译好之后,打开chrome.sln工程,并将chrome.vcxproj设置为启动工程(startup project),然后点击运行(或调试运行),你就可以用vs 2013来调试你的chrome了,通过设置关键的断点,你可以通过查看callbakc,逐步了解,chrome代码运行的过程,非常有意思,下面是我查看,chrome浏览器打开一个网页窗口的过程,通过看堆栈,就能引导你逐步读懂chrome的代码:
关于代码的结构,及调试中的细节,及有趣的东西,后续文章再写~,累了,回去睡觉了,明天还得上班,而且不允许迟到…….
转发到新浪微博轻松一刻
- 所有评论
上一篇: 国内访问gmail的方法
下一篇: 2015年,年终小结