chromium源码下载并编译
目前,chromium的源代码已经全部迁移到了git管理,所以本文主要梳理一下下载chromium源代码的过程。
一、概况
chromium现在分为四个大分支:
- canary:最前沿的版本,每天都发布,bug一堆,不适合新人
- dev:每两个星期发布,比较稳定,可以体验新功能和新特性
- deta:每周小版本更新,六周大版本更新。比dev稳定,比同期dev版小1个版本号,基本上是stable的待发版本
- stable:比同期dev小2个版本号,两到三周次版本更新一次,每六周主版本更新。这是正式的发布版本,推荐用这个来学习,特别是新人
二、下载chromium源代码
1.浏览器翻墙下载并设置depot_tools
chromium源代码的构建工具集的管理是通过depot_tools来管理的,所以首先要下载一个depot_tools。这个工具是在chromium的官网上的,可能需要科学上网才能够下载,具体的下载地址:depot_tools。直接下载对应的系统的版本,windows的直接下载一个压缩包。
下载完成后,将depot_tools.zip解压,把depot_tools目录路径添加到系统的PATH环境变量开始处;如PATH=c:\depot_tools;.......
要把depot_tools的目录放大path的前面。如果加在path路径后面,要确保你path内部没有git,python等路径
2.为dos的cmd.exe设置代理
depot_tools工具下载设置完成后,就可以利用depot_tools中的脚本去下载一些必要的工具,比如git、svn、Python等工具,同时也会更新depot_tools中的数据。这些脚本的执行都是在cmd中完成的,并需要连接网络来下载数据,这时就要为cmd设置网络代理。具体的方法如下所示:
首先必须找到一个可用的高速http/https/socks5的代理服务器
为cmd设置http/https/socks5代理。打开一个具有管理员权限的cmd(非常重要),在其中输入:
x:>netsh netsh>winhttp netsh winhttp> netsh winhttp> netsh winhttp>set proxy http.proxy.com:12345
其中
http.proxy.com:12345
为你的代理的IP地址和端口号。
设置完成后,退出该cmd就可以了。该设置使固化在系统红的,重新启动之后,该设置依然有效。启动一个新的cmd,执行命令
x:>gclient
,这时就能够利用设置好的cmd代理下载git、svn、python等工具并更新depot_tools。等上面的步骤执行结束后,再次执行
x:>gclient
,一般这里的执行结果会失败。即使再次成功了,也没有关系,继续往下设置。之所以说这里可能失败,是因为第一次执行gclient只要是更新depot_tools、下载git等工具;第二次执行gclient就要通过git工具下载一些东西了,但是这时git并没有设置代理。如果git下载不能翻墙,那么就会报错。
3.为git设置代理
在第二次运行gclient命令前,我们要为git设置好代理。git支持git、http/https、ssh等协议,在这里我们只需要设置最简单的http/https协议就行了。假设代理服务器的地址为:http://http.proxy.com:12345,http://https.proxy.com:2345,scoks5://scoks.proxy.com:3456,设置方法如下:
先设置CMD环境变量,在CMD中输入:
x:>set http_proxy=http://http.proxy.com:12345 x:>set https_proxy=http://https.proxy.com:23456 x:>set socks5_proxy=socks5://https.proxy.com:23456
为git设置代理
a)使用http/https代理服务器x:>git config --global http.proxy %http_proxy% x:>git config --global https.proxy %https_proxy%
或者:b)使用socks5代理服务器
x:>git config --global http.proxy %socks5_proxy% x:>git config --global https.proxy %socks5_proxy%
验证git代理
设置完后,用下面命令看是否成功:x:>git config --get http.proxy x:>git config --get https.proxy
再次执行gclient命令
这时git的代理就设置好了,再次运行gclient
命令,就会利用git通过设置的代理下载一些数据。这样gclient
命令就能够正确的执行完毕。
成功后可以运行一次gclient –version看看版本号,并注意一下有没有错误提示:x:>gclient --version
配置git的用户名和邮箱
x:>git config --global user.name "yourname" #yourname改为你希望的用户名 x:>git config --global user.email "youremailaddress@gmail.com" #输入你自己的邮箱 x:>git config --global core.autocrlf false x:>git config --global core.filemode false
4.开始同步chromium源代码并编译
环境设置完毕,下面就开始同步源代码:
建立一个目录用于下载chromium代码,比如D:\chromium,在此目录中在建立一个目录master;D:\chromium\master就是我们将要签出代码的主目录。
进入该目录,通过下面的命令,产生.gclient文件:
gclient config https://chromium.googlesource.com/chromium/src.git
设置环境变量
set GYP_MSVS_VERSION=2013 set GYP_GENERATORS=ninja set DEPOT_TOOLS_WIN_TOOLCHAIN=0 // 如果要编译release版本则是 set GYP_DEFINES=branding=Chromium buildtype=Official //这里使用的是windows kit 10,后面说为什么。 set GYP_DEFINES=windows_sdk_path="C:\Program Files (x86)\Windows Kits\10" component=shared_library disable_nacl=1 enable_automation=0 enable_captive_portal_detection=0 enable_google_now=0 enable_hidpi=0 fastbuild=1 ffmpeg_branding=Chrome incremental_chrome_dll=0 proprietary_codecs=1 remoting=0
提示:环境变量set GYP_MSVS_VERSION原来是2015,但是用了一个月过期了,再次使用它编译出现一些问题,所以还是用2013版本的。
在当前窗口运行,运行如下内容耐性等待,看网络条件2–40小时:
gclient sync --nohooks --with_branch_heads --with_tags --output-json="log.json"
如果发生错误,注释掉depot_tools\python276_bin\Lib\mimetypes.py文件的248–251行内容:
# try:
# ctype = ctype.encode(default_encoding) # omit in 3.x!
# except UnicodeEncodeError:
# pass再次运行下面的命令:
gclient sync --nohooks --with_branch_heads --with_tags --output-json="log.json"
执行完成后进入src目录,执行下面的命令:
cd src git fetch git pull
为了安全起见,再次执行下面的命令:
cd .. gclient sync --nohooks --with_branch_heads --with_tags --output-json="log.json" cd src git fetch git pull
生成工程文件(最好做一个备份或者做个分支)
一定要注意,runhooks前要修改两个文件: src\build\common.gypi 在5488行(4610, # Object
can never be instantiated)左右,加入 4702, 4819, 4996,
src\build\some.gyp 的 #’../chrome/chrome.gyp:chrome’,前面的#取消,解除注释这里说一下添加这几个数字的用途:
由于编译chromium源码对warning要求很严格,一旦出现warning就会停止编译。在common.gypi文件中增加这些整数就是降低该warning的等级,或者说忽略该warning。如果在最新的代码基础上面产生工程文件,会生产一个不稳定版本。类似于 http://dev.chromium.org/getting-involved/dev-channel 上面的 Canary build for Windows 版本.
执行命令开始构建系统:gclient runhooks --force
编译当前版本源代码,在src目录执行:
ninja -C out\Debug chrome # 生成x86 Debug版本 ninja -C out\Debug content # 生成content_shell版本 ninja -C out\Release chrome # 生成x86 Release版本 ninja -C out\Debug_X64 chrome # 生成x64 Debug版本 ninja -C out\Release_X64 chrome # 生成x64 Release版本
注意:这样直接的编译会产出好多的提示信息,又由于windows的控制台是不能翻页的,所以最好把编译的信息重定向到一个文件中。在每一个命令的后面加上
>>log.txt 2>&1
就可以了。
5.代码同步完成后,恢复系统的代理设置
恢复netsh winhttp设置为直连
打开一个具有管理员权限的CMD,输入下面命令:x:>netsh netsh>winhttp netsh winhttp> netsh winhttp>reset proxy
输入下面命令看清除是否成功,成功后显示下面信息:
netsh winhttp>show proxy Current WinHTTP proxy settings:Direct access (no proxy server).
清除git代理
打开一个普通的CMD,输入下面的命令:git config --global --unset http.proxy
三、编译指定版本的chromium源代码
首先切换至src目录下,列出所有版本的标签,下面的命令将标签记录到tags.txt文本中:
git tag >>tags.txt 2>&1
用sublime打开tags.txt文件后查看版本号,这里只截取最新版本号。
大家可以切换到某个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 --output-json="log.json"–jobs 16
//使用--nohooks可以减少每次都检查编译环境等信息。
这样就能够编译当前版本的chromium源代码了。
四、参考文档
- netfleet的博客
- chromium浏览器开发系列第二篇:如何编译最新chromium源码
chromium源码下载并编译相关推荐
- WebRTC源码下载与编译
WebRTC源码编译 1 几种源码下载方案对比 1.1 拉别人下好的代码 1.2云服务器 1.3 国内镜像 1.4 挂代理(推荐) 2 源码编译环境准备 2.1 环境要求 2.2 代理服务器配置 2. ...
- WebRTC 开发(二)源码下载与编译
转载:http://depthlove.github.io/2019/05/02/webrtc-development-2-source-code-download-and-build/ 在使用任何工 ...
- VLC for Android源码下载和编译
Project Hosting on 点击打开链接 最受欢迎的开源项目 点击打开链接 由Android的核心开发团队提供了15个优秀的示例项 目,包含了游戏.图像处理.时间显示.开始菜单快捷方式等. ...
- ros源码下载及编译
Ros1 源码下载及编译 准备工作 Setup your sources.list Setup your computer to accept software from packages.ros.o ...
- Android12 源码下载、编译、刷机、单编调试Framework
文章目录 说明 1. 代码下载 1.1 下载Repo工具 1.2 安装和配置Git 1.3 创建工程目录 1.4 初始化Repo仓库 1.5 同步代码 2. 驱动下载 2.1 下载对应机型的驱动 2. ...
- 《深入理解Android内核设计思想(第2版)(上下册)》之Android源码下载及编译
本文摘自人民邮电出版社异步社区<深入理解Android内核设计思想(第2版)(上下册)> 购书地址:http://item.jd.com/12212640.html 试读地址:http:/ ...
- 《深入理解Android内核设计思想(第2版)(上下册)》之Android源码下载及编译...
本文摘自人民邮电出版社异步社区<深入理解Android内核设计思想(第2版)(上下册)> 购书地址:item.jd.com/12212640.ht- 试读地址:www.epubit.com ...
- SELinux零知识学习四、Audit应用层源码下载、编译和安装
接前一篇文章:SELinux零知识学习三.SELinux应用层源码下载.编译和安装 在前篇文章中编译SELinux源码时,出现了如下错误: seusers_local.c:11:10: 致命错误:li ...
- Android 4.0.1 源码下载,编译和运行
[牛人分享]Android 4.0.1 源码下载,编译和运行 转自 http://blog.csdn.net/rambo2188/article/details/6943382 ----------- ...
最新文章
- noi 2728 摘花生
- 一种简单的redis分布式锁方案
- Redis设置外网可访问
- 8个JavaScript库可更好地处理本地存储
- curl shell 失败_linux – curl命令不在bash中通过shell脚本执行
- 机器学习-01regression
- git grep 全字匹配_git log --grep 筛选(转)
- 推荐一款好用的取色器(仅支持windows)
- MATLAB画圆时却显示椭圆?一个命令解决问题!
- android截屏加水印,Android截图以及加水印Demo
- 【GEE笔记】最大类间方差法(otsu、大津法)算法实现——计算阈值、图像二值化分割
- SOPCAST所有频道的地址
- Ps的变换、蒙版与色彩平衡
- 0xc0000225无法进系统_win10系统出现0xc0000225无法进入系统的恢复方法
- 小图标的使用(插入icon图标)
- 题解HDU6148 Valley Numer(数位DP+深搜DFS)
- 竞技体育数据可视化与可视化分析综述
- 线性代数2.5分块矩阵
- SPSS——方差分析(Analysis of Variance, ANOVA)——单因素方差分析
- Element UI 多选搜索实现拼音匹配
热门文章
- 什么是国密SSL证书?和普通SSL证书有什么区别?
- polkadot区块链浏览器
- lockbit勒索病毒专杀工具,.lockbit勒索病毒数据恢复,lockbit勒索病毒解密处理,数据库恢复
- 如何将小米手机的备忘录内容导出到华为Nova3?
- Python调用华为API实现人脸比对
- 领域驱动设计(DDD):领域接口化设计
- Java连接sql server数据库实现简单版人力资源系统
- js四舍五入并保留两位小数
- 苹果那个 iMessage 商店上线才半年,已经不热了
- 文明5 java 攻略_【图片】新手入门教程(科技胜利向指导)【文明5吧】_百度贴吧...