1.下载安装git
$ sudo apt install git-all
2.下载depot_tools
$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
设置环境变量,~/.bashrc文件末尾添加depot_tool路径,
export PATH=$PATH:/path/to/depot_tools
并使更改生效
$ source ~/.bashrc
3.新建源代码目录
$ mkdir webrtc-checkout
$ cd webrtc-checkout
4.终端设置代理
$ export https_proxy=http://X.X.X.X:X
此步骤跳过fetch --nohooks webrtc后会出错:
[P4998 17:53:06.584 remote.go:125 W] cipd: connectivity error (Get https://chrome-infra-packages.appspot.com/_ah/api/repo/v1/instance/resolve?package_name=infra%2Ftools%2Fcipd%2Flinux-amd64&version=git_revision%3A4d19637ec2c3d1efd8c6a1b05285118b786919e2: proxyconnect tcp: tls: oversized record received with length 20527)
5.获取webrtc源代码
$ fetch --nohooks webrtc
6.手动创建文本文件.boto
文件内容:
[Boto]
proxy=192.168.21.208
proxy_port=808
注意不能写成如下:
[Boto]
proxy=http://192.168.21.208
proxy_port=808
否则,gclient sync后会报错:
Boto proxy host: “http://192.168.21.208” differs from https_proxy proxy host: “192.168.21.208”
设置环境变量NO_AUTH_BOTO_CONFIG
$ export NO_AUTH_BOTO_CONFIG=/usr/work/app/webrtc/.boto
此步骤跳过gclient sync后会出错:
You have PROXY values set in your environment, but gsutil in depot_tools does not (yet) obey them.
7.同步代码
$ gclient sync
8.添加脚本( 但花费时间较长,如果紧急可忽略此步骤)
$ ./build/install-build-deps.sh
9.检出到一个稳定的版本
$cd src
$git checkout branch-heads/72
10.生成ninja项目
$ gn gen ../Debug --args='is_debug=false'
11.编译源码
$ ninja -C ../Debug
12.可以查看所有的参数
$ gn args ../debug/ --list
2020.2.27更新:
修改webrtc源码重新编译时遇到问题:
1.gn: command not found 或者 gclient command not found
解决办法:
因为 depot_tools 环境变量配置有误,没有正确找到 depot_tools 目录下的 gn 或 gclient 工具,确认 ~/.bashrc 文件配置是否正确:
2.报错
ERROR at //build/config/linux/pkg_config.gni:103:17: Script returned non-zero exit code.
pkgresult = exec_script(pkg_config_script, args, “value”)
解决方法:
sudo apt-get update && sudo apt-get install pkg-config
3.git status显示修改了大量文件,git diff提示filemode变化
diff --git a/whitespace.txt b/whitespace.txt
old mode 100644
new mode 100755
解决办法:
原来是filemode的变化,文件chmod后其文件某些位是改变了的,如果严格的比较原文件和chmod后的文件,两者是有区别的,但是源代码通常只关心文本内容,因此chmod产生的变化应该忽略,所以设置一下:
git config --add core.filemode false
4.运行gclient sync后提示错误 client not configured see ‘gclient config’
需要生成配置文件:gclient config https://webrtc.googlesource.com/src.git
然后再执行gclient sync