chromium获取代码和编译
转自360公司的一位仁兄,链接地址:http://blog.gclxry.com/?p=364
之前一直是用一个chromium27的代码来研究chromium的代码。自己也调用chromium content 写了一个浏览器器,最基本的功能都有。
这几天跑去http://dev.chromium.org/ 上看,chromium的代码刚好全部迁移到了git管理了。我就想获取最近的代码研究吧,毕竟chromium27快一年了,要跟上时代哈。
获取chromium代码,以及正确的编译成功不是一件容易的事。其中的坑太多了,当初我也是一路摸打滚爬中走过来的,说多了都是眼泪。我在这里总结一些,给后来人一点帮助吧。
选择开发频道
在获取chromium代码之前你先要搞清楚自己需要哪个版本的代码。chromium同时有四个发布分支,分别是:
- canary频道。这一般是最前沿的实验版本,每日发布。它没有经过充分测试,可能有某些奇怪的bug。如果是为了学习基础的chromium代码,我不建议跟进这个分支。
- dev频道。每2星期发布,相对稳定,新功能和新特性都有。
- beta频道。每周更新,6周大版本更新。比较稳定了,比dev版小1个版本,基本是发布的候选,比stable版本早进化一个月。
- stable频道。就是稳定版,比dev版本小2个版本,2到3周次版本跟新,6周主版本跟新。经过了充分的测试,我比较推荐这个版本。
这里可以看到详细的说明:http://www.chromium.org/getting-involved/dev-channel
获取代码
http://dev.chromium.org/developers/how-tos/get-the-code 上已经写清楚了如何获取代码。现在统一都是用git了。
首要要配置好depot_tools。chromium会用depot_tools去获取代码。这个基本上按着文档来。因为中国的网络问题,获取chromium代码经常失败,这里强力推荐用vpn。有些公司会屏蔽vpn,比如我们公司。这里只能用IE代理了,但是chromium获取代码很多地方没有走IE代理,这里需要我们自己去hook下脚本了,我曾经写过如何设置代理的博客。这种方法太麻烦。
获取代码现在真是简单,就一句 fetch chromium,然后慢慢等吧,会下载十几GB的数据。只要把网络问题解决了,获取代码还是比较顺利的,否则就是无法跨越的大坑。
切换到工作分支
成功获取代码不一定能够成功编译通过,这一点是最郁闷的。
获取完代码一般是在master分支,这个分支一直都在更新,不稳定。我们需要切换到一个已发布的稳定版本上。我选择follow stable频道的代码,然后就是要选择一个版本。在chromium的发布日历 http://dev.chromium.org/developers/calendar 上找到最新的stable频道版本,目前是37.0.2062.103。
然后在代码仓库目录中运行git:
1
2
3
4
5
6
7
8
|
# 获得所有发布tag的信息。
git fetch --tags
# 根据37.0.2062.103版本建立一个你自己的分支
git checkout -b your_release_branch 37.0.2062.103
// 同步所有相关工程代码
gclient sync --with_branch_heads --jobs 16
|
编译工程
http://dev.chromium.org/developers/how-tos/build-instructions-windows
目前最新的代码已经用vs2013编译了。好快啊,我最开始接触chromium的时候还是用的vs2008。这里可以用depot_tools里面的工具链ninja去编译代码,也可以自己安装vs2013去编译。
用vs2013去编译代码经常会编译不过。因为chromium里面包含的第三方工程太多了,很多在windows下面有库的依赖,字符编码等问题。我个人的推荐做法是用ninja去编译代码,用vs2013去浏览、编辑和调试代码,脚本如下:
1
2
3
4
5
6
|
set GYP_GENERATORS=msvs-ninja,ninja
set GYP_DEFINES=component=shared_library
set GYP_MSVS_VERSION=2013
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
gclient runhooks
pause
|
如果是编译成release版本,脚本如下:
1
2
3
4
5
6
|
set GYP_GENERATORS=msvs-ninja,ninja
set GYP_DEFINES=branding=Chromium buildtype=Official
set GYP_MSVS_VERSION=2013
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
gclient runhooks
pause
|
祝你好运
没什么好说,全凭人品。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步