谷歌webrtc移植嵌入式平台记录

本文详细介绍了如何在Ubuntu18.04上为ARM环境编译WebRTC库,包括设置交叉编译工具链,下载depot_tools,配置环境变量,执行编译脚本,以及生成静态库的过程。编译过程中需要注意设置目标操作系统和CPU架构,并通过ninja进行构建。最后,文章提到了CMake引用WebRTC库时的必要定义。

在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
否则会出现许多的链接错误报告说某些方法找不到定义

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值