美文网首页
WebRtc下载与编译

WebRtc下载与编译

作者: 唐洪峰 | 来源:发表于2017-12-29 14:12 被阅读0次

WebRtc下载与编译

一、 环境准备:
保证磁盘容量足够(>30G),源码全部大概22G左右。

  1. 本人电脑配置ubuntu16.04.2 kylin 64位
  2. jdk 1.8 下载安装,两种安装方式:
    a) Installing default JRE/JDK
sudo apt-get update
sudo apt-get install default-jre
sudo apt-get install default-jdk

b) Installing Oracle JDK

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update

Oracle JDK 6

sudo apt-get install oracle-java6-installer

Oracle JDK 7

sudo apt-get install oracle-java7-installer

Oracle JDK 8

sudo apt-get install oracle-java8-installer

并配置到环境变量。命令:gedit /etc/profile .将JDK所在目录追加到PATH中。重启系统。

  1. 安装git
sudo apt-get install git

配置git

git config --global user.name "github帐号"
git config --global user.email "github邮箱"
  1. 安装depot_tools:
    先在ubuntu的“系统设置”的“网络设置"中将代理设置为手动,地址指向代理IP(本示例装在虚拟机中,翻墙是在主机中使用shadowsocks,因此指向物理机地址:192.168.164.1,端口1080),重启,然后git拷贝代码:
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

并配置到环境变量。命令:

gedit /etc/profile

将depot_tools所在目录追加到PATH中。重启系统。

export PATH=/home/thf/depot_tools:$PATH
  1. 安装如下编译webrtc需要用到的工具 ( sudo apt-get install ..) :
    g++ (>= 4.2)
    python (>= 2.4)
    libnss3-dev >= 3.12
    libasound2-dev
    libpulse-dev
    libjpeg62-dev
    libxv-dev
    libgtk2.0-dev
    libexpat1-dev

二、下载代码

  1. 创建WebRTC目录
mkdir WebRTC
cd WebRTC
  1. 设置depot_tools代理(gclient sync出现download_from_google_storage错误时的解决方法)
    新建一个文件gclient.boto(比如/home/thf/gclient.boto),添加以下内容
[Boto]
proxy=192.168.164.1
proxy_port=1080

并配置环境变量。

sudo gedit /etc/profile 

添加

export NO_AUTH_BOTO_CONFIG=/home/thf/gclient.boto
  1. 同步WebRTC代码
export GYP_DEFINES="OS=android"
fetch --nohooks webrtc_android
gclient sync

注意,若长时间出现 Still working on等信息,请不要中断或者关闭,它依然在运行,如果你这里中断了,那么之前下载的东西会全部删除,然后又得重新sync一遍
三、编译代码

  1. 安装编译需要的软件及配置 (需要翻墙,运行成功过一次以后就不用再运行了):
sudo src/build/install-build-deps-android.sh
  1. 更新ubuntu软件包(如果重启后报下列错误)
failed to start clean up any mess left by 0dns-up.See 'systemctl status dns-clean.service' for details.
ubuntu the system is running in low-graphics mode

则进入命令行模式,执行:

sudo apt-get update
sudo apt-get upgrade
reboot
  1. 进入到src目录下 执行,这一步是配置环境变量:
. build/android/envsetup.sh 
  1. 开始编译
gn gen out/Debug --args='target_os="android" target_cpu="arm"'

编译Debug版: ninja -C out/Debug
编译Release版:ninja -C out/Release
耐心等待编译完成,只要前几部没什么问题,这一步还是很顺利的,成功后可以在out/Debug 下找到编译好的apk demo文件及so,jar包等等

  1. 编译模块
    后缀为 ninja(*.ninja) 的文件是 ninja 的 构建文件。对 WebRTC 来讲,执行完 gn gen 之后,会在 out/Debug(out/Release) 下生成 build.ninja 文件,可以把这个文件看做是整个 WebRTC 的“ Makefile ”。它里面调用了各个模块的 ninja 文件。
    要编译某个模块,可以在 ninja 命令后跟模块名字(build.ninja文件中定义的构建目标,就像 Makefile 中的构建目标一样)。比如构建 webrtc/media:
ninja media

ninja 支持子工具,比如 clean ,用来清理一次构建。用法如下:

ninja -t clean

如果要清理某个模块,可以这样:

ninja -t clean media

WebRTC编译系统之gn和ninja

gn

使用 gn 生成 ninja 构建文件的常用命令:
a) 生成 debug 版本的构建文件,默认配置

gn gen out/Debug

b) 生成 release 版本的构建文件

gn gen out/Release --args="is_debug=false"

注意,通过 --args 可以传递参数给 gn ,具体参数的含义,由 WebRTC 的构建系统来解释。比如 is_debug 选项,决定构建 debug 还是 release 版本。
如果有多个参数,可以这样传递:

gn gen out/Release --args="is_debug=false proprietary_codecs=true"

args指定多个参数时,参数之间用空格分隔。生成的参数,存放在 out/Release 下的 args.gn 文件中。你可以直接打开该文件查看。
通过--args 指定的参数,会覆盖 WebRTC 构建系统中同名参数。
gn 支持为 WebRTC 生成针对某个 IDE 的工程文件,通过 --ide 来指定。具体支持哪些 IDE ,可以使用下列命令查看:

gn gen --help

比如下列命令,生成支持 QtCreator 的项目文件:

gn gen out/Release --args="is_debug=false" --ide="qtcreator"

如果你已经使用 gn gen 生成过构建文件,想看看这个版本的构建文件都指定了什么参数,可以使用下面命令:

gn args out/Release --list

它会列出所有的 build arguments 和对应的文档,以及当前值。
如果你想查看某个参数,可以使用下面的命令:

gn args out/Release --list="is_debug"
ninja

后缀为 ninja(*.ninja) 的文件是 ninja 的 构建文件。对 WebRTC 来讲,执行完 gn gen 之后,会在 out/Release 下生成 build.ninja 文件,可以把这个文件看做是整个 WebRTC 的“ Makefile ”。它里面调用了各个模块的 ninja 文件。
要完整编译 WebRTC ,只要在 src 目录执行下列命令:

ninja -C out/Release

-C 选项告诉 ninja ,进入 out/Release 目录来编译。所以,它等同于:

cd out/Release
ninja

编译某个模块,可以在 ninja 命令后跟模块名字(build.ninja文件中定义的构建目标,就像 Makefile 中的构建目标一样)。比如:
构建 webrtc/media

ninja media

使用下列命令可以查看帮助:

ninja --help

ninja 支持子工具,比如 clean ,用来清理一次构建。用法如下:

ninja -t clean

如果要清理某个模块,可以这样:

ninja -t clean media

更多子工具,可以这样看到:

ninja -t list

相关文章

网友评论

      本文标题:WebRtc下载与编译

      本文链接:https://www.haomeiwen.com/subject/mrvigxtx.html