一、webrtc源码获取
参考链接地址为https://webrtc.org.cn/mirror/
本文以m80源码为例,进行讲解说明
二、国产下webrtc静态库交叉编译
2.1 aarch64平台交叉编译环境安装
2.1.1 安装交叉编译工具链
sudo apt-get install binutils-aarch64-linux-gnu
sudo apt-get install gcc-7-aarch64-linux-gnu
sudo apt-get install g++-7-aarch64-linux-gnu
cd /usr/bin
sudo ln -s aarch64-linux-gnu-gcc-7 aarch64-linux-gnu-gcc
sudo ln -s aarch64-linux-gnu-g++-7 aarch64-linux-gnu-g++
2.1.2 源码安装交叉工具依赖库
cd webrtc/build/linux/sysroot_scripts
./install-sysroot.py --arch=arm64
2.1.3 交叉编译aarch64版本webrtc库
gn gen out/Release-aarch64 --args='
target_os="linux"
target_cpu="arm64"
rtc_use_x11=true
is_debug=false
is_component_build=false
rtc_include_tests=false
rtc_use_h264=true
use_rtti=true
use_custom_libcxx=false
treat_warnings_as_errors=false
is_clang=false
rtc_enable_protobuf=false
symbol_level=0
rtc_build_examples=false
proprietary_codecs=true
rtc_use_pipewire=true
rtc_build_ssl = true
rtc_build_tools =false
ffmpeg_branding="Chrome"
use_partition_alloc=false
rtc_include_pulse_audio=false
'
ninja -C out/Release-aarch64
2.2 mips64el平台交叉编译环境安装
2.2.1 安装交叉编译工具链
sudo apt-get install binutils-mips64el-linux-gnu
sudo apt-get install gcc-7-mips64el-linux-gnu
sudo apt-get install g++-7-mips64el-linux-gnu
cd /usr/bin
sudo ln -s mips64el-linux-gnu-gcc-7 mips64el-linux-gnu-gcc
sudo ln -s mips64el-linux-gnu-g++-7 mips64el-linux-gnu-g++
2.2.2 源码安装交叉工具依赖库
cd webrtc/build/linux/sysroot_scripts
./install-sysroot.py --arch=mips64el
2.2.3 交叉编译mips64el版本webrtc库
gn gen out/Release-mips64el --args='
target_os="linux"
target_cpu="mips64el"
rtc_use_x11=true
is_debug=false
is_component_build=false
rtc_include_tests=false
rtc_use_h264=true
use_rtti=true
use_custom_libcxx=false
treat_warnings_as_errors=false
is_clang=false
rtc_enable_protobuf=false
symbol_level=0
rtc_build_examples=false
proprietary_codecs=true
rtc_use_pipewire=true
rtc_build_tools =false
rtc_build_ssl = true
ffmpeg_branding="Chrome"
use_partition_alloc=false
'
ninja -C out/Release-mips64el
2.3 loongarch64平台交叉编译环境安装
2.3.1 loongarch64工具链安装
打开龙芯官网下载loongarch交叉工具链
http://ftp.loongnix.cn/toolchain/gcc/release/loongarch/gcc8/loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.2.tar.xz
解压工具链到指定目录,本文档解压到/opt/cross_compile/loongarch64
2.3.2 配置依赖库目录及修改webrtc源码增加loongarch支持
修改工具链配置增加对loongarch交叉编译支持
cd build/toolchain/linux
vim BUILD.gn
文件末尾添加如下工具链设置代码
gcc_toolchain("loongarch64") {
toolprefix = "loongarch64-linux-gnu-"
cc = "${toolprefix}gcc -w"
cxx= "${toolprefix}g++ -w"
ar = "${toolprefix}ar"
ld = cxx
readelf = "${toolprefix}readelf"
nm = "${toolprefix}nm"
toolchain_args = {
cc_wrapper = ""
current_cpu = "loongarch64"
current_os = "linux"
is_clang = false
use_goma = false
}
}
导出环境变量指定依赖库位置
export PATH=$PATH:/opt/cross_compile/loongarch64/usr/bin
export SYSROOT="/opt/cross_compile/loongarch64/usr/sysroot"
export CPATH=$CPATH:${SYSROOT}/usr/include:${SYSROOT}/usr/include/glib-2.0:${SYSROOT}/usr/lib/glib-2.0/include:${SYSROOT}/usr/include/gio-unix-2.0
2.3.3交叉编译loongarch64版本webrtc库
gn gen out/Release-loongarch64 --args='
target_os="linux"
target_cpu="loongarch64"
rtc_use_x11=true
is_debug=false
is_component_build=false
rtc_include_tests=false
rtc_use_h264=true
use_rtti=true
use_custom_libcxx=false
treat_warnings_as_errors=false
is_clang=false
rtc_enable_protobuf=false
symbol_level=0
rtc_build_examples=false
proprietary_codecs=true
rtc_use_pipewire=false
rtc_build_ssl = true
ffmpeg_branding="Chrome"
rtc_build_tools =false
use_partition_alloc=false
'
ninja -C out/Release-loongarch64
2.4 amd64平台交叉编译环境安装
2.4.1 安装编译工具链
sudo apt-get install gcc-7
sudo apt-get install g++-7
2.4.2 源码安装依赖库
cd webrtc/build/linux/sysroot_scripts
./install-sysroot.py --arch=amd64
2.4.3 编译amd64版本webrtc库
gn gen out/Release-amd64 --args='
target_os="linux"
target_cpu="x64"
rtc_use_x11=true
is_debug=false
is_component_build=false
rtc_include_tests=false
rtc_use_h264=true
use_rtti=true
use_custom_libcxx=false
treat_warnings_as_errors=false
is_clang=false
rtc_enable_protobuf=false
symbol_level=0
rtc_build_examples=false
proprietary_codecs=true
rtc_build_tools =false
rtc_use_pipewire=true
rtc_build_ssl = true
ffmpeg_branding="Chrome"
use_partition_alloc=false
'
ninja -C out/Release-amd64