当前位置: 首页 > news >正文

在mac下手动编译迁移的android版webrtc组件

我原先使用的android版webrtc是在linux下编译的,现在因为某些原因需要把整个库迁移到mac下编译。

把代码迁移完后,正常是需要通过gclient sync 重新构建编译环境,但是由于网络限制等方面原因,会导致完成的比较慢。

在摸索一阵后,找到了一种方式可以快速的编译出webrtc,步骤如下:

假设已经有 NDK、depot_tools、ninja,并且可以正常使用了

1.修改 src/build/config/compiler/BUILD.gn

由于NDK提供的clang交叉编译器不支持该选项,所以需要注释掉:

#asmflags = [ "-Wa,-fdebug-compilation-dir,." ]

2.修改 src/build/toolchain/android/BUILD.gn

默认使用的 eu-strip是linux下的elf可执行文件,因此需要修改:

strip = rebase_path("//buildtools/third_party/eu-strip/bin/eu-strip",root_build_dir)
修改为:strip = _tool_prefix + "strip"

3.在src目录下执行gn命令生成ninja编译脚本

clang_base_path:需要设置成 NDK 的编译器目录 /Users/plants/Workspace/Video/android-ndk-r19c/toolchains/llvm/prebuilt/darwin-x86_64/

android_ndk_root:需要设置成 NDK 的安装目录 /Users/plants/Workspace/Video/android-ndk-r19c

custom_toolchain:需要设置成android特定编译器环境 //build/toolchain/android:android_clang_arm64

具体命令行如下:

gn gen out/Release/arm64-v8a --args='is_debug=false target_os="android" target_cpu="arm64" rtc_include_tests=false rtc_build_examples=false proprietary_codecs=true ffmpeg_branding="Chrome" clang_base_path="/Users/plants/Workspace/Video/android-ndk-r19c/toolchains/llvm/prebuilt/darwin-x86_64/" clang_use_chrome_plugins=false android_ndk_root="/Users/plants/Workspace/Video/android-ndk-r19c" custom_toolchain="//build/toolchain/android:android_clang_arm64" android64_ndk_api_level=21'

4.执行编译命令

ninja -C out/Release/armeabi-v7a

这样就可以在不重新同步编译环境的情况下直接编译webrtc组件。

注意:本方式应对的是老版本的webrtc(M75),使用的NDK也是老的r19c,因此对于新版本的webrtc可能不适用。另外我只编译了webrtc中音视频相关的组件,如果编译其它的组件可能还会出现其它问题。

http://www.lryc.cn/news/579132.html

相关文章:

  • Docker Dify安装 完整版本
  • 「Java流程控制」跳转语句
  • 【数据结构】排序算法:冒泡与快速
  • OWASP Top 10 是什么?
  • 胡兵创立时尚生活频道《HUBING SELECTS胡兵智选》担任主编深耕智选生活
  • java实现发送短信
  • QT6 源(147)模型视图架构里的表格窗体 QTableWidget 的范例代码举例,以及其条目 QTableWidgetItem 类型的源代码。
  • 【嵌入式电机控制#6】编码器原理与内部构造
  • HTTP 协议深入理解
  • Django 安装使用教程
  • Day3.常见音频场景
  • 动手学Dify:自定义工具与沙盒
  • 澳鹏重磅发布MediGo医疗大模型数据开发平台 破解医疗AI数据瓶颈
  • 【docker部署】在服务器上使用docker
  • 【深度学习-Day 34】CNN实战:从零构建CIFAR-10图像分类器(PyTorch)
  • CISSP知识点汇总-安全与风险管理
  • 智能学号抽取系统 V3.7.5 —— 一个基于 Vue.js 的交互式网页应用
  • 小架构step系列02:搭建工程
  • 智能检测原理和架构
  • STM32WB55VGY6TR 蓝牙OTA升级
  • ZED相机与Foxglove集成:加速机器人视觉调试效率的实用方案
  • 观测云 × AWS SSO:权限治理可观测实践
  • 计算机组成笔记:缓存替换算法
  • [202106][凤凰架构][构建可靠的大型分布式系统][周志明][著]
  • 车载软件架构 -- SOA服务分层设计原则
  • MacOS 安装brew 国内源【超简洁步骤】
  • 线程同步【Linux操作系统】
  • Kafka 运维与调优篇:构建高可用生产环境的实战指南
  • Java学习第六部分——API部分(续)
  • 腾讯云认证考试报名 - TDSQL数据库交付运维专家(TCCE PostgreSQL版)