说一下为什么这么晚才发第二篇,上周和这周department的工作太多了,晚上都是十点半从公司出发,回家以后实在没有多余的精力去摸键盘了。所以请大家包涵!

上期回顾:

chromium源码下载:

1.找个靠谱的vpn(我试过了,网上说的不用vpn拿代码的都不靠谱);

2.获取depot_tools,解压,设置环境变量;

3.gclient获取python和git,svn,设置环境变量;

4.fetch–nohooks chromium –nosvn=true 获取源码;

5.gclientsync --force –nohooks 同步到最新

上边的python和git,也可以通过手动安装,只要环境变量设置好了就可以。

环境配置:

获取代码的最后一步是获取编译环境也就是Visual Studio 2013,上面所有的都成功以后,运行gclient runhooks就会把编译需要的vs2013的文件下载到本地,存储在depot_tools\win_toolchain\vs2013_files路径下,主要文件是编译需要的库文件。

在windows上编译chromium的官网几个说明:

1.你必须把你的windows系统区域设置为英文,否则编译时会发生错误:"The file contains a character that cannot berepresented in the current code page."这个问题在不切换语言的情况下也可以解决。请往下看。

2.因为之前的Visual Studio Express(免费版)存在一些问题,微软也在update4中做了修复,所以现在官网说明用Visual Studio 2013 Update4(Community版或者Professional版)来编译,其他的版本不支持。另外windows系统版本必须是win7 64位以后的版本,32位的已经不支持了。

另外一些说明:

选择编译的版本:

首先切换至src目录下,列出所有版本的标签,下面的命令将标签记录到tags.txt文本中:git tag >>tags.txt 2>&1

使用notepad++打开后如下,只截取了最新tag:

大家可以切换到某个tag进行编译,命令和切换到分支相同,使用如下命令:

git checkout -b chrome_43.0.2355.2_local_branch 43.0.2355.2

创建本地分支chrome_43.0.2355.2_local_branch并切换到远程43.0.2355.2tag上

通过git branch查看是否成功:

同步代码:

gclient sync --nohooks --with_branch_heads --with_tags --outpu

t-json="log.json"–jobs 16

使用--nohooks可以减少每次都检查编译环境等信息。

编译:

1)生成工程,生成可以用vs2013打开的sln,方便之后调试使用。写成批处理文件执行:

set GYP_MSVS_VERSION=2013

set GYP_GENERATORS=msvs-ninja,ninja

set GYP_DEFINES=component=shared_library

set PATH=C:\depot_tools\python276_bin\;C:\depot_tools\;

python.exe src/build/gyp_chromiumsrc/chrome/chrome.gyp >>log.txt 2>&1

2)编译工程

set PATH=C:\depot_tools\;

ninja -C src\out\debug chrome>>log.txt 2>&1

以上两步把生成的log放在log.txt中,方便查看。

说明:

1.set GYP_GENERATORS=msvs-ninja,ninja

最新代码生成工程时,会因为msvs-ninja无法打开一些文件,应该影响不大

2.set GYP_DEFINES=branding=Chromium proprietary_codecs=1 buildtype=Dev

优化设置,可以设置

3.set DEPOT_TOOLS_WIN_TOOLCHAIN=0

设置为0是让gclient不要自动去构建环境,使用本机现有环境,可能修改的地方比较多,例如设置set GYP_DEFINES=windows_sdk_path="C:\Program Files(x86)\Windows Kits\8.0",一些json文件的路径等等。默认为0.

由于编译chromium源码对warning要求很严格,所以我列出较重要的warning的解决方法:

1.针对编码问题,和语言问题。

解决方法:最新版本已经将waring4996包含其中,但是没有4819,加上它,会解决很多麻烦。

在src\build\common.gypi文件中增加:

附上官方关于编译参数的说明:

在线查看版本号的地址:

http://omahaproxy.appspot.com/

之后我会陆续推出关于chromium的一些列文章,请大家继续关注。

如果大家对本系列文章有疑问,可以直接在公众号留言,小编第一时间联系原创作者帮你耐心解答。

技术人员都有自己的情怀,深陷其中而不被理解,欢迎关注个人微信公众平台:程序员互动联盟(coder_online),一个开发人员的家,来诉说自己的故事。

摘自:http://my.oschina.net/u/2335664/blog/395973

chromium浏览器开发系列第二篇:如何编译最新chromium源码的更多相关文章

  1. chromium浏览器开发系列第二篇:如何编译最新chromium

    说一下为什么这么晚才发第二篇,上周和这周department的工作太多了,晚上都是十点半从公司出发,回家以后实在没有多余的精力去摸键盘了.所以请大家包涵! 上期回顾: chromium源码下载: 1. ...

  2. 【转载】chromium浏览器开发系列第一篇:如何获取最新chromium源码

    背景:     最近摊上一个事儿,领导非要让写一篇技术文章,思来想去,自己接触chrome浏览器时间也不短了,干脆就总结一下吧.于是乎,本文顺理成章.由于有些细节必需描述清楚,所以这次先讲如何拿到ch ...

  3. chromium浏览器开发系列第一篇:如何获取最新chromium源码

    背景:      最近摊上一个事儿,领导非要让写一篇技术文章,思来想去,自己接触chrome浏览器时间也不短了,干脆就总结一下吧.于是乎,本文顺理成章.由于有些细节必需描述清楚,所以这次先讲如何拿到c ...

  4. 【转载】Android Metro风格的Launcher开发系列第二篇

    前言: 各位小伙伴们请原谅我隔了这么久才开始写这一系列的第二篇博客,没办法忙新产品发布,好了废话不说了,先回顾一下:在我的上一篇博客Android Metro风格的Launcher开发系列第一篇写了如 ...

  5. chromium浏览器开发系列第三篇:chromium源码目录结构

    上两篇介绍了下载源码和编译源码,这次主要介绍chromium的源码目录结构,我也是通过源码和官网结合来跟大家说,如果有说的不准确的,欢迎交流. 另外,官网的不一定准确,他们其实也很懒,所以最主要还是靠 ...

  6. chromium浏览器开发系列第四篇:如何调试最新chromium源码

    转自:http://blog.itpub.net/20687969/viewspace-1586513/ 附上上几篇文章地址,方便大家查看: 下载源码 编译源码 目录结构 接二连三的事情,时间比较紧张 ...

  7. 转载:浏览器开发系列第一篇:如何获取最新chromium源码

    背景:     最近摊上一个事儿,领导非要让写一篇技术文章,思来想去,自己接触chrome浏览器时间也不短了,干脆就总结一下吧.于是乎,本文顺理成章.由于有些细节必需描述清楚,所以这次先讲如何拿到ch ...

  8. chromium浏览器开发系列第四篇:如何调试最新chromium

    接二连三的事情,时间比较紧张,但是还是没有把这个系列的文章丢掉,因为这也是对自己知识的总结吧.提倡大家多写写,以后再看的时候会有种莫名的小激动. 上周写的是chromium的目录结构,好像大家不太感兴 ...

  9. chromium浏览器开发系列第五篇:Debugging with WinDBG

    Windbg 相信windows开发的人都知道,有些人用的溜儿溜儿的,有个crash,直接拿这个工具一分析,就定位出来了.非常好用.以前有个同事,做sdk开发 的,会各种命令.来北京后,还去过微软面试 ...

随机推荐

  1. android仿win8 metro磁贴布局

    代码下载     //更新代码,   这里是更新后的代码 //////////////////////// 1,含一个图片无限滚动的控件,自己实现的 2.可新增删除每个磁贴 3.来个图片吧 ////* ...

  2. Android语音搜索

    前言 在现有的软件的搜索框中基本上都会加上语音搜索的图标,以方便用户输入.我们xxxx的搜索框其实也可以借鉴这样的输入方式,提高用户体验.语音识别有3种方式实现①使用intent调用语音识别程序;②通 ...

  3. 【JavaScript】页面加载性能优化

    核心在于:减少加载时间 1.减少请求次数 2.缩减文件大小 3.异步加载---------------------->比如document.write 4.延迟加载.动态加载---------- ...

  4. [ES6] 14. Generator -- 1. yield & next()

    Generators in ECMAscript 6 are first-class coroutines that produce encapsulated suspended execution  ...

  5. Android实现Filterable通过输入文本框实现联系人自动筛选

    相信大家一定在见过手机通讯录的一个情景就是使用在选人的时候输入文本框里的数据就能自动筛选.实现的效果如下图. 其实实现这样的效果相信大家一定对另外一个控件不陌生那就AutoCompleteTextvi ...

  6. lambda形式(转)

    lambda语句被用来创建新的函数对象,并且在运行时返回它们. 使用lambda形式 #!/usr/bin/python# Filename: lambda.py def make_repeater( ...

  7. 40多个关于人脸检测/识别的API、库和软件

    英文原文:List of 40+ Face Detection / Recognition APIs, libraries, and software 译者:@吕抒真 译文:链接 自从谷歌眼镜被推出以 ...

  8. 一款基于jQuery轮播切换焦点图,可播放多张图片

    今天给大家分享一款基于jQuery轮播切换焦点图,可播放多张图片,在这个组件中,你可以任意指定8张图片,然后插件就会帮你自动生成缩略图,并且自动开始切换播放图片.当然,你也可以手动切换图片,只要点击缩 ...

  9. php对比辨析之 mysql_escape_string & mysql_real_escape_string & addsalshes

    概述: addslashes和mysql_real_escape_string.都是为了使数据安全的插入到数据库中而进行过滤. addslashes 转义的字符是单引号(').双引号("). ...

  10. SQL VS NoSQL 如何选择数据库

    在前一篇文章中我们主要的讨论了SQL与NoSQL数据库之间的主要的差别.接下来,我们将会利用上一篇中的知识来确定在特定的场景中如何确定比较好的选择. 首先我们先来总结一下: SQL数据库: ​使用表存 ...