chromium和webrtc编译相关资料

from–https://aaron-bird.github.io/2019/02/01/%E7%BC%96%E8%AF%91%20Chromium(Windows)/

from–https://www.cnblogs.com/Forever-Kenlen-Ja/p/7653144.html

from–https://blog.csdn.net/qq_38303267/article/details/88664506

 

1.下载depot_tools
https://storage.googleapis.com/chrome-infra/depot_tools.zip
下载后将其解压到相应文件夹中,并将其路径添加到系统的环境变量中

在这里插入图片描述

2.自动更新工具
管理员权限打开cmd,运行gclient自动更新工具,下载Python、git、svn等工具
3.拉取webrtc代码及编译
3.1 拉取webrtc代码时需要使用网络代理(vpn/vps),使用方式请百度
3.2 新建需要放置代码的目录,控制台转换到该目录
3.3 设置代理接口
set http_proxy=127.0.0.1:1080
set https_proxy=127.0.0.1:1080
注:本次设置仅在此控制台生效,重新启动无效,代理服务器端口跟具体使用代理有关,请自行调整
webrtc代码较为庞大,请保证代理流量充足以及磁盘空间充足(10G )
3.4 拉取webrtc代码
fetch –nohooks webrtc
如此过程中断,可用gclient sync进行继续
3.5 设置编译所需环境变量
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
set GYP_MSVS_VERSION=2017 # 指定vs版本
set GYP_MSVS_OVERRIDE_PATH=C:\Microsoft Visual Studio\2017\Community #vs安装路径,替换成自己的
set GYP_GENERATORS=msvs-ninja,ninja
3.5 生成vs工程及编译(如果不需要VS工程的话,此处可以将–ide=vs移除)
gn gen out/project –ide=vs
ninja -C out/project
注:此过程可能报错,报错缺少gn.exe时,可能为代码没有下载完整,如果gclient sync成功,可使用gclient runhooks进行相关确实工具的下载(数据量较大,需代理)
过程中报缺失sdk的,如下这个
在这里插入图片描述

可参考https://docs.microsoft.com/zh-cn/windows-hardware/drivers/download-the-wdk进行vs2017的安装及配置(两步都需要)
在这里插入图片描述

源码及工程下载
链接:https://pan.baidu.com/s/1NObFQ_fkxfAIzg_UzH92yA
提取码:hla0

 

 

VS2017 编译 chromium和webrtc

chromium的编译和webrtc的编译方式相同,webrtc官网也是使用的chromium的编译文档。

步骤一、跳 – 墙,先跳 – 墙这是第一步哟,chromium大概有10几个G,webrtc有6个G左右。

步骤二、下载depot_tools,并配置环境变量,PATH下添加depot_tools的解压路径E:\src\depot_tools

步骤三、cmd运行gclient安装python2.7.6和git,如果你电脑之前有安装python3的版本,卸载掉。

步骤四、配置VS的版本,环境变量设置

DEPOT_TOOLS_WIN_TOOLCHAIN = 0

GYP_MSVS_VERSION = 2017

GYP_MSVS_OVERRIDE_PATH = D:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise

步骤五、 下载源码,这个时间很漫长,我chromium用了2个小时,webrtc用了1个多小时

命令行执行

webrtc 下载只需要把chromium改成webrtc即可。

中间断了的话,可以通过gclient sync来同步代码,我下载的时候没有断过。

步骤六、生成vs2017解决方案 cd chromium 源码目录下 gn gen out/Default 

生成all.sln解决方案

步骤七、编译生成可执行文件 执行 ninja -C out/Default chrome  编译,当然也可以在vs2017里面打开all.sln build编译

花了将近5个小时编译出来了 chrome.exe 不过又多出来了50多个G的编译临时文件,预留好空间哟。

 

 步骤八、VS2017单步跟踪chromium源码 4701个projects,惊叹!!!找到winMain跟进去试一下。以后项目需要什么轮子,就来chromium和webrtc里面找,肯定没错。

 

 

 

2019/7/13日注:
该文章内容已过时,部分配置及环境要求发生变动. 具体过程请参阅官方的编译指南.
https://chromium.googlesource.com/chromium/src/%20/master/docs/windows_build_instructions.md

系统环境 Windows 7 x64
编译版本 Chromium 69.0.3482.0

安装Visual Studio Community 2017

Visual Studio Community 的下载地址

安装时,勾选以下选项
如果已经安装了Visual Studio Community 2017, 可通过 工具 > 获取工具和功能 打开该页面

  • 工作负载
    • 使用 C 的桌面开发
      • 用于 x86 和 x64 的 Visual C ATL
      • 用于 x86 和 x64 的 Visual C MFC
  • 单个组件
    • SDK、库和框架
      • Windows 10 SDK (10.0.17134.0)
  • 语言包
    • 英语

注意不要更改默认的安装位置, 如果改了编译时可能会出错,提示找不到Visual Studio
C盘不够大的话可以更改下载缓存位置到其他硬盘分区

安装SDK Debugging Tools

1 安装Visual Studio后, 打开Control Panel → Programs → Programs and Features
2 右键 Windows Software Development Kit -> 点击Change
3 选择Change -> 点击 Next按钮 -> 勾选Debugging Tools For Windows -> 点击Change按钮

安装depot_tools

depot_tools 的下载地址
解压depot_tools.zip,这里以解压到路径D:\depot_tools为例
1 将D:\depot_tools添加到系统变量Path中(一定要放在最前,特别是之前安装了Python和Git)
2 添加系统变量DEPOT_TOOLS_WIN_TOOLCHAIN,将值设置为0
3 进入depot_tools文件夹,使用cmd运行gclient命令

注意:应使用系统自带的cmd运行gclient命令,别的shell(cygwin, PowerShell)可能会出错   如果gclient运行时报错,可使用gclient sync继续运行

下载chromium源代码

创建chromium文件夹并进入

1
mkdir chromium && cd chromium

注: 本文将chromium文件夹创建在D盘下,即路径 D:\chromium

输入如下命令,下载chromium代码

1
fetch --no-history chromium

下载完成后会自动创建src文件夹
用cd命令进入src目录, 以下操作皆在该文件夹进行

1
cd src

生成编译配置文件

Chromium使用Ninja作为编译工具,使用GN生成.ninja配置文件
输入如下gn args命令,在out\mybuild目录下创建编译所需配置文件

1
gn args out\mybuild

执行如上命令后,会弹出一个记事本.在其中输入编译配置,保存后关闭记事本

1
2
3
4
5
6
7
8
9
10
11
use_jumbo_build = true
enable_nacl = false
target_cpu = "x64"
remove_webcore_debug_symbols = true
symbol_level = 0
is_debug = false
ffmpeg_branding = "Chrome"
proprietary_codecs = true
is_component_build = false
dcheck_always_on = true
is_official_build = true

2019/7/13 更新

1
2
3
4
5
6
7
8
9
10
11
use_jumbo_build = true
enable_nacl = false
target_cpu = "x64"
symbol_level = 1
blink_symbol_level=0
is_debug = false
ffmpeg_branding = "Chrome"
proprietary_codecs = true
is_component_build = false
dcheck_always_on = true
is_official_build = false

更多配置参见官方gn配置文档

编译

使用ninja命令编译

1
ninja -j 1 -C out/mybuild chrome

参数 -j N为使用进程数,默认为6

低配电脑使用多进程可能会出错,建议使用参数-j 1编译,即单个进程

如果编译中出错,重新执行ninja -j 1 -C out/mybuild chrome命令即可继续编译

增量更新及编译

在D:\chromium\src下执行如下命令

1
2
3
git rebase-update
gclient sync
ninja -j 1 -C out/mybuild chrome

注: git rebase-update 失败的话, 可以用 git pull 命令代替

Error

1 运行gclient命令时报错

1
Username for \'https://chrome-internal.googlesource.com\':

解决办法
确保已设置系统变量DEPOT_TOOLS_WIN_TOOLCHAIN ,且变量值为0
参考

2 运行ninja命令时报错

1
Exception: C:\Program Files (x86)\Microsoft Visual Studio\2 missing - make sure VC   tools are installed.

解决办法
确保安装了VC 2017 version 15.9 v14.16 latest v141 tool等工具

51023817-cab1cf00-15c2-11e9-998a-8807bb17a3c6.png

3
error Windows 10.0.18362.0 SDK or higher required.
解决办法
安装 Windows 10 SDK (10.0.18362.0)
Windows 10 SDK – Windows app development

4
resource whitelist generation only works on non-component builds with debug info enabled. See //tools/grit/grit_rule.gni:105:7: symbol_level > 0 && !strip_debug_info && !is_component_build

解决办法 更改 ninja 配置 symbol_level = 0 -> symbol_level = 1

参考

windows_build_instructions
gn-build-configuration
chrome|chromium User Data Directory – Default Location
Chromium代码编译选项介绍

上一篇
下一篇