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
|
祝你好运
没什么好说,全凭人品。
chromium获取代码和编译的更多相关文章
- 获取Chromium代码以及编译
获取和编译Chromium必须自备梯子,最好是购买一个稳定的V*P*N,喜欢折腾的可以使用类似shadowsock的代理(需要设置google文档). 英文版教程文档可以参考这个界面,下面详细说Win ...
- Android开发:APK的反编译(获取代码和资源文件)
一.反编译工具: 1.APKTool: APKTool是由GOOGLE提供的APK编译工具,能够完成反编译及回编译apk的工作.同时,它也有着安装反编译系统apk所需要的framework-res框架 ...
- .NET代码自动编译发布
.NET代码自动编译发布 因本人一直使用.NET开发,在做项目的时候,每次都要涉及到各个环境的部署问题,手工操作容易出错,并且重复劳动多,所以一直在寻找一个能实现自动化部署的方案. 废话不多讲,先 ...
- Jenkins进阶-Git多仓库代码下载编译 (13)
多仓库代码部署这个问题其实在13年做配置管理的时候,就遇到过这样的问题,而最近公司可视化图项目也需要多个仓库代码需要同时下载进行编译,由于仓库之间的代码编译有依赖关系,所以必须同时下载下来按照顺序进行 ...
- 微信小程序编译包的获取与解压——在手机中获取小程序编译包wxapkg
准备工作: 微信关注需要下载编译包的小程序,然后点进去看一下,微信就会自动下载相应的编译包到手机上了. 获取小程序编译包: 据说root手机可以直接在手机的文件管理中查找wxapkg文件,自己尝试了下 ...
- php 获取代码执行时间和消耗的内存
做一些php性能测试的时候,要获取代码执行时间和消耗的内存,查了一下资料,发现php有自带的函数可以实现这个功能,具体实现代码如下: $t1 = microtime(true);// ... 执行代码 ...
- C#代码反编译 得到项目可运行源码
C#代码反编译 得到项目可运行源码 摘自:http://www.cnblogs.com/know/archive/2011/03/15/1985026.html 谈到"C#代码反编译&quo ...
- Snippet Compiler——代码段编译工具
原文地址:http://www.cnblogs.com/conexpress/archive/2011/07/24/2115308.html 不知道大家在工作中是否遇到过下面的情况:在项目中实现了一段 ...
- Maven配置插件跳过测试代码的编译和运行
Maven配置插件跳过测试代码的编译和运行: <!-- 编译插件 --> <plugin> <groupId>org.apache.maven.plugins< ...
随机推荐
- 探索 OpenStack 之(15):oslo.messaging 和 Cinder 中 MessageQueue 消息的发送和接收
前言:上一篇文章 只是 RabbitMQ 的科普,本文将仔细分析 Cinder 中 RabbitMQ 的各组件的使用.消息的发送和接收等.由于各流程步骤很多,本文只会使用若干流程图来加以阐述,尽量做到 ...
- B+树的特点
1.B+树是应文件系统产生的B树的变种.它依然是一颗多路查找树,与B树相比它的不同体现在: (1).如果非叶子节点包含n个关键码,则这个节点有n个子树. (2).非叶子节点仅包含关键码信息,叶子节点包 ...
- CentOS 6.5上MySQL安装部署与入门。
centos 6.5 yum 安装mysql1. 安装软件:yum install -y mysql-server mysql mysql-devel2.启动服务:service mysqld sta ...
- POJ 1556 The Doors --几何,最短路
题意: 给一个正方形,从左边界的中点走到右边界的中点,中间有一些墙,问最短的距离是多少. 解法: 将起点,终点和所有墙的接触到空地的点存下来,然后两两之间如果没有线段(墙)阻隔,就建边,最后跑一个最短 ...
- HDU 1892 See you~
最裸的二维树状数组,但是因为内存太大(c[1010][1010]),好像不能运行,结果蒙着写,写了好久.. 代码: #include <iostream> #include <cst ...
- Eclipse打开xml文件报校验错误解决办法
XML文件在Eclipse中报校验错误: The content of element type "web-app" must match "(icon?,display ...
- javascript获取当前的时间戳
JavaScript 获取当前时间戳:第一种方法: var timestamp = Date.parse(new Date()); 结果:1280977330000第二种方法: var timesta ...
- Windows下安装Redmine
参考链接:http://www.cnblogs.com/afarmer/archive/2011/08/06/2129126.html 最新教程:http://www.myexception.cn/w ...
- CSS3之firefox&safari背景渐变之争 - [前端技术][转]
Firefox浏览器下的渐变背景 Firefox3.6background:-moz-linear-gradient(top, red, rgba(0, 0, 255, 0.5));chrome/S ...
- Table AdvanceTable针对表内行禁用multipleSelection , singleSelection
OATableBean table = (OATableBean)webBean.findChildRecursive("LineTable"); table.setInserta ...