在ubuntu18.04上编译:
前置条件
1、需要翻墙(必须)否则步骤3会报403错误
2、配置开发板的交叉编译工具链的位置 并写入环境变量,配置完在终端输入arm- 按TAB键有出现arm-linux-gnueabihf- 表示配置成功
3、下载depot_tools工具
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
4、在环境变量中设置depot_tools的路径
export PATH=$PATH:/home/song/sambashare/webrtc/depot_tools
编译过程
选择编译环境为arm环境
./build/linux/sysroot_scripts/install-sysroot.py --arch=arm
如果要使用其他环境则改 --arch=<> 可以使用的有’arm’, ‘arm64’, ‘i386’, ‘amd64’, ‘mips’, ‘mips64el’
指定编译目标系统和CPU架构
gn gen out/arm --args='target_os="linux" target_cpu="arm" rtc_include_tests=false is_debug=false'
可以加上一些其他参数
rtc_include_tests=false //是否包含测试文件,默认是包含的,最好加上这个选项 = false,否则文件太大
is_debug=false //构建非调试版本
同理如果需要编译为linux x86平台使用的库
需要先指定编译环境,如64位机
./build/linux/sysroot_scripts/install-sysroot.py --arch=amd64
再指定编译目标系统和CPU架构
gn gen out/linux_64 --args='target_os="linux" target_cpu="x64" rtc_include_tests=false is_debug=false'
以上两步执行完后,执行编译 ninja -C <输出文件路径>
** arm平台路径
ninja -C out/arm
** linux_64平台路径
ninja -C out/linux_64
编译过程较慢,需要耐心等待
ARM环境静态库生成
编译结束后使用指令(内容按使用填写)
find <编译目标平台对应的目录路径> -name *.o -exec cp -avx {} <存放.o文件的目录路径> \;
将编译出来的.o文件收集到一个文件中,进入该文件夹中
cd <存放.o文件的目录路径>
使用交叉编译工具将.o打包为.a 静态库
arm-linux-gnueabihf-ar cur libwebrtc.a *.o
使用交叉编译工具将库符号索引表更新 -->不更新会存在程序找不到函数的情况
arm-linux-gnueabihf-ranlib libwebrtc.a
此时生成的libwebrtc.a 就可以拿来用了
Cmake 引用时注意
add_definitions(-std=c++11)
add_definitions(-DWEBRTC_POSIX)
add_definitions(-DWEBRTC_LINUX)
使用webRTC库时 必须定义三个条件
\1. C++11标准编译
\2. 定义使用POSIX标准
\3. 定义使用的OS 也就是LINUX
否则会出现许多的链接错误报告说某些方法找不到定义