本文簡單介紹在Ubuntu下libwebrtc的編譯過程。python
因爲網速限制,實際編譯過程是在遠程vps上編譯滴。git
系統環境
Ubuntu 18.04系統的虛擬主機。web
root@vultr:~# pwd /root root@vultr:~# cat /etc/issue Ubuntu 18.04.2 LTS \n \l
編譯webrtc
安裝依賴工具
獲取webrtc源代碼須要使用Chromium depot tools。vim
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 # 使配置生效
這樣即可使用相關命令了。c#
下載源代碼
建立一個保存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命令以後,還需執行以下命令:fetch
root@vultr:~/webrtc-checkout# cd src root@vultr:~/webrtc-checkout/src# ./build/install-build-deps.sh
Building
兩種編譯方式,具體解釋可查看Building。ui
Debug模式:(本文采用這種模式)google
root@vultr:~/webrtc-checkout/src# gn gen out/Default Done. Made 990 targets from 201 files in 644ms
Release模式spa
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/