本文简单介绍在Ubuntu下libwebrtc的编译过程。
由于网速限制,实际编译过程是在远程vps上编译滴。
系统环境
Ubuntu 18.04系统的虚拟主机。
root@vultr:~# pwd /root root@vultr:~# cat /etc/issue Ubuntu 18.04.2 LTS l
编译webrtc
安装依赖工具
获取webrtc源代码需要使用Chromium depot tools。
root@vultr:~# git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git # 下载工具 export PATH=$PATH:/path-to/depot_tools # 添加到环境变量
# 临时添加,如
root@vultr:~# export PATH=$PATH:/root/depot_tools
# 添加到/etc/profile中,
root@vultr:~# vim /etc/profile
...
export PATH=$PATH:/root/depot_tools # 在文件最后一行添加,wq!退出
root@vultr:~# source /etc/profile # 使配置生效
这样便可使用相关命令了。
下载源代码
创建一个保存webrtc源代码的目录webrtc-checkout。
root@vultr:~# mkdir webrtc-checkout root@vultr:~# cd webrtc-checkout root@vultr:~/webrtc-checkout# apt install python -y # 需要python 支持 root@vultr:~/webrtc-checkout# fetch --nohooks webrtc # 获取和同步代码,下载量很大,约12G root@vultr:~/webrtc-checkout# gclient sync &
Linux (Ubuntu/Debian)系统,在执行完gclient sync命令之后,还需执行如下命令:
root@vultr:~/webrtc-checkout# cd src root@vultr:~/webrtc-checkout/src# ./build/install-build-deps.sh
Building
两种编译方式,具体解释可查看Building。
Debug模式:(本文采用这种模式)
root@vultr:~/webrtc-checkout/src# gn gen out/Default Done. Made 990 targets from 201 files in 644ms
Release模式
gn gen out/Default --args='is_debug=false'
清理目录
gn clean out/Default
编译
大致需要编译一个小时左右。
root@vultr:~/webrtc-checkout/src# ninja -C out/Default
这样就编译出libwebrtc.a文件,编译结束。
root@vultr:~# du -sh * 170M depot_tools 17G webrtc-checkout
编译mediasoupclient
Requirements
POSIX or Windows based operating system cmake >= 3.5 gcc and g++ >= 4.9 or clang (with C++11 support)
如果是CentOS7系统的话,上面两项都不满足,版本较老,需要先升级,因此不太推荐在CentOS7系统上编译,比较繁琐,Ubuntu较方便。
编译
mediasoupclient依赖libwebrtc,具体编译过程可参考libmediasoupclient v3 Installation。
仅一点关于编译需稍微指出:
cmake . -Bbuild -DLIBWEBRTC_INCLUDE_PATH:PATH=PATH_TO_LIBWEBRTC_SOURCES # src源代码目录 -DLIBWEBRTC_BINARY_PATH:PATH=PATH_TO_LIBWEBRTC_BINARY # 编译出libwebrtc.a目录
此处的环境设置如下:
cmake . -Bbuild -DLIBWEBRTC_INCLUDE_PATH:PATH=root/webrtc-checkout/src -DLIBWEBRTC_BINARY_PATH:PATH=/root/webrtc-checkout/src/out/Default/obj
其它地方应该没什么大问题。
参考
https://webrtc.org/native-code/development/
https://mediasoup.org/documentation/v3/libmediasoupclient/installation/