一. 前言
本文介绍在 ubuntu 下如何通过 webrtc 源码编译出指定版本 webrtc.lib 库(以 m94 版本为例)。
二. 编译步骤
1. 下载depot_tools工具
depot_tools 是 Google 用来管理大型项目代码(例如 WebRTC)的工具集,它包含了源码获取与同步等命令。
下载 depot_tools 工具命令如下。
cd ~ && git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
echo 'export PATH="$PATH:$HOME/depot_tools"' >> ~/.bashrc #如果不是放在主目录,注意修改为实际使用的路径
source ~/.bashrc
2. 下载webrtc源码
执行如下命令下载 webrtc 代码,如果 gclient sync 因为网络原因中断,重复执行 gclient sync 直到成功。
mkdir webrtc
cd webrtc
fetch --nohooks webrtc
gclient sync
3. 下载编译所需依赖
cd src
./build/install-build-deps.sh
4. 编译webrtc库
本文以 m94 版本为例进行说明,webrtc 版本说明可以查看该链接。
m94 版本对应的分支是 branch-heads/4606。
由于 m94 分支构建需要使用 vpython 工具,而最新的 depot_tools 目录下已经没有 vpython,因此首先进入 depot_tools 目录切换到旧分支(可以使用 chrome/4147)。
再进入 webrtc 代码目录的 src 子目录,执行如下命令切换到 m94 分支
git checkout -b m94 branch-heads/4606
接下来执行 gclient sync 同步所需依赖。
gn gen out/m94 --args="is_debug=true is_clang=false use_custom_libcxx=false rtc_include_tests=false treat_warnings_as_errors=false rtc_use_h264=false target_cpu=\"x64\" use_lld=false enable_iterator_debugging=true"
ninja -C out/m94
三. 如何使用
编译完成后在 out/m94/obj 目录下可以看到 libwebrtc.a,但使用时还需要头文件,我们还需要手动提取 webrtc 源码的头文件。
进入 webrtc 代码主目录,执行如下命令。
rsync -amv --include=*/ --include=*.h --include=*.hpp --exclude=* src/ include/
执行完成后可以在 webrtc 主目录看到 include 目录,即为 webrtc 库对应的头文件。