WebRtc源码下载与编译(完整版)

C编程思想 2024-08-26 10:33:01 阅读 92

自从想要了解学习Webrtc,就从网上到处找源码编译,但是要么是源码本身的问题,要么是编译过程用的的工具问题,找到源码总是不能编译过去。于是下决心直接从源头拉取最新源码编译,经过几天折腾,解决了上网问题后,下载编译了linux和Android的源码,并编译通过。过程记录如下,供大家参考。

一、Linux版本

1、安装depot_tools

创建工作目录webrtc,cd  到自己创建的工作目录(/home/zhangpf/webrtc),拉取工具:

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

如果出现443 timeout,需要手工设置git的proxy,走主机vp n端口(备注:V PN使用的http端口10809)

git config --global http.proxy "192.168.0.46:10809"

git config --global https.proxy "192.168.0.46:10809"

成功后,将工具路径添加到环境变量中:

vi ~/.bashrc

# .bashrc添加如下一行

export PATH="$PATH:/home/zhangpf/webrtc/depot_tools"  (一定要全路径)

执行生效source ~/.bashrc

2、获取代码

mkdir code (/home/zhangpf/webrtc/code)

cd code

fetch --nohooks webrtc

过一会儿,显示如下就表示正常进行:

中间如果报错,出现中断,执行: gclient sync 继续下载。

没有报错,下载完后也执行一下  gclient sync。

中途如果下载个别文件因为网络原因有出错的地方,fetch会中断,可以找到日志中的git 链接复制过来直接手工下载,比如:

git -c core.deltaBaseCacheLimit=2g clone --no-checkout --progress https://chromium.googlesource.com/chromium/tools/depot_tools.git /home/zpf/webrtc/src/third_party/_gclient_depot_tools_z3x8wt3s

成功后再执行: gclient sync 继续下载。

gclient sync 最后可能会停止住很长时间不动,如果这时去统计src目录的大小,可以看到字节数在变化,说明后台还在下载,要耐心等待。然后开始出现 Running hooks: 的打印:

时间大概需要几十分钟左右。在90%会停止很久的样子,src的字节数会继续大幅增加。一般会出现如下NOTICE,但是应该没有什么问题。如果要解决,参考这个从其他网页截取的方法。

以上操作是下载最新版本,如果要下载指定分支,如下操作:

比如将分支定位到m72

(查看分支: get branch -r)

$ cd src

$ git checkout -b m72 refs/remotes/branch-heads/72

$ cd …

$ gclient sync

3、安装依赖

cd src

./build/install-build-deps.sh

在Ubuntu 22版本上,大多数依赖软件的版本都比要求的高,因此一路就下来了。

4、生成Ninja工程文件

gn gen out/Default (目标输出目录out/Default)

编译报错:

1)gn: command not found 或者 gclient command not found

解决办法:

因为 depot_tools 环境变量配置有误,没有正确找到 depot_tools 目录下的 gn 或 gclient 工具,确认 ~/.bashrc 文件配置是否正确。或者不能使用sudo。

2)编译错误

解决方法如下:

gn gen 成功后,提示如下:

5、编译

ninja -C out/Default

耗时: 09:45 - 11:37

成功后,在out/Default/obj文件夹下生成静态库——libwebrtc.a

二、Android版本

1、安装depot_tools

linux一样,如果装过了就省略这一步。

2、拉取代码:

fetch --nohooks webrtc_android

gclient sync

代码总大小: 27.65G。

3、安装依赖:

cd src

./build/install-build-deps.sh

./build/install-build-deps-android.sh (最新版没有这一步了,省略)

source build/android/envsetup.sh

4、生成Nijia文件

gn gen out/Default --args='target_os="android" target_cpu="arm64" is_debug=false'

5、编译:

Ninja -C out/Default

虚拟机新装的ubuntu会报没有gcc的错误,需要运行 sudo apt-get install gcc。

编译用时: real 206m9.113s

6、输出文件

在Default目录下找自己需要的输出文件,比如libjingle_so.so。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。