gcc编译webrtc arm64版

项目需要在arm64平台上跑webrtc,但是提供的工具链是gcc/g++。大家都指定webrtc 默认的编译器是clang++ ,clang++编出来的库,如果第二次开发使用gcc/g++会有很多兼容问题,所以需要将webrtc也用gcc编译。

环境:ubuntu16.4 x86

目标环境:linux arm64

1、下载webrtc:

设置代理:

export http_porxy="http://127.0.0.1:7777"
export https_porxy="http://127.0.0.1:7777"

安装工具depot_tools

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

echo "export PATH=$PWD/depot_tools:$PATH" > ~/.bashrc
source ~/.bashrc

下载代码:

mkdir webrtc
cd webrtc
fetch --nohooks webrtc
gclient sync

2、按照编译依赖

cd src
./build/install-build-deps.sh

3、下载编译环境:

build/linux/sysroot_scripts/install-sysroot.py --arch=arm64

4、安装编译器:

sudo apt get install binutils-aarch64-linux-gnu

sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu

5、设置编译参数(下面是原创的)

gn gen out/Release-arm64 --args='target_os="linux" target_cpu="arm64" is_debug=false is_component_build=false is_clang=false rtc_include_tests=false rtc_use_h264=true rtc_enable_protobuf=false use_rtti=true use_custom_libcxx=false treat_warnings_as_errors=false use_ozone=true rtc_include_pulse_audio=false use_libjpeg_turbo=false use_system_libjpeg=true'

对我来说上面标红的参数是非常重要的

如果遇到:error: 'isfinite' was not declared in this scope, 可以直接将对应文件的isfinite改为std::isfinite

use_rtti=true,会在编译自己程序连接静态库时报错:undefined reference to `typeinfo for rtc::MessageHandler'

use_custom_libcxx: 这个要这么设置,要不然会使用内置的libcxx,设置了这个就使用libstdcxx了

rtc_include_pulse_audio: 因为我的系统没有pulseaudo ,于是我设置这个直接使用alsa

use_libjpeg_turbo/use_system_libjpeg: 不设置这个会使用内置的libjpeg_turbo,编译会报各种错误

6、遗留问题

这个编出来的libwebrtc.a库没有将json 打包进去,也没有将test_video_capturer 打包进去,导致我第二次开发,独立gcc编译peerconnection_client  的时候报找不到json相关符号表,也找不到undefined reference to `vtable for webrtc::test::TestVideoCapturer 的符号表。 一直没有找到原因,最后手动将相关的点o 打包进libwebrtc.a中,尴尬。 有知道通过编译webrtc 就直接将这些点o 打包进libwebrtc.a 的朋友,欢迎指导。

参考:Linux下编译WebRTC(Linux和Android版本) - 简书

海思webrtc交叉编译 - 程序员宅基地

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值