【问题标题】:cross compile WebRTC for ARM为 ARM 交叉编译 WebRTC
【发布时间】:2025-02-26 15:40:01
【问题描述】:

我尝试为 armv7 架构 (AllWinner A20) 交叉编译 WebRTC。在 www.webrtc.org 上没有说明如何执行此操作,仅适用于 Android 和 IOS,在互联网上我发现了一些帖子怎么做,这里是:

WebRTC building for arm

https://foxdogstudios.com/webrtc-on-linux

https://groups.google.com/forum/#!topic/discuss-webrtc/yzuk8wATMU8

https://github.com/mpromonet/webrtc-streamer/wiki/Cross-compile-WebRTC-for-Raspberry-Pi

所有这些都是大约 2 年前写的,并以命令开头:

gclient 配置http://webrtc.googlecode.com/svn/trunk

据我了解,它是旧的存储库名称,并且 buildsystem 在过去 2 年中也发生了变化。谁能帮助我完整的指导如何为 ARM 构建 WebTRC?

【问题讨论】:

  • 当前构建过程是安装 chromium depot_tools 并使用 fetchgclientninja 实用程序 (webrtc.org/native-code/development)。要进行交叉编译,我会创建一个 ARM chroot 环境,因为来自 google 的这些工具(如ninja)的文档记录很差,所以我不知道如何正确配置它们以进行交叉编译。至少在搜索交叉之前,您是否尝试过构建直 i386/amd64?
  • 可能有点晚了,但希望该教程对您有很大帮助。访问参考:WebRtc_Library_Compilation

标签: linux arm webrtc cross-compiling chromium


【解决方案1】:

不是为 ARM 平台交叉编译 WebRTC 的最佳解决方案:

安装仓库工具并...

mkdir -p web_rtc && cd web_rtc
export GYP_DEFINES="OS=linux"
fetch --nohooks webrtc
gclient sync
cd src
./build/linux/sysroot_scripts/install-sysroot.py --arch=arm
gn gen out/Default --args='target_os="linux" target_cpu="arm"'

## UGLY HACK.
mv webrtc/modules/rtp_rtcp/test/testFec/test_packet_masks_metrics.cc webrtc/modules/rtp_rtcp/test/testFec/test_packet_masks_metrics.cc.bak
touch webrtc/modules/rtp_rtcp/test/testFec/test_packet_masks_metrics.cc

ninja -C out/Default

【讨论】:

  • X11 现在是我的问题......你能帮帮我吗? arm-linux-gnueabihf-g++ -Wl,--fatal-warnings -fPIC -Wl,-z,noexecstack -Wl,-z,now -Wl,-z,relro -Wl,-z,defs -B../ ../third_party/binutils/Linux_x64/Release/bin -fuse-ld=gold -Wl,--icf=all -pthread -Wl,-O1 -Wl,--gc-sections -Wl,--按需- wl,-rpath-link=../Release -Wl,--disable-new-dtags -o "./webrtc_tests" -Wl,--start-group @"./webrtc_tests.rsp" -Wl,--end -group -ldl -lrt -lm -lX11 -lXext -lXcomposite -lXrender -lXcursor -lXdamage -lXfixes -lXi -lXtst ../../third_party/binutils/Linux_x64/Release/bin/ld.gold:错误:找不到-lX11
  • 我使用了这个:gn gen ./out/Release --args='is_debug=false rtc_use_h264=false ffmpeg_branding="Chrome" rtc_include_tests=false is_clang=false target_cpu="arm"treat_warnings_as_errors=false rtc_enable_protobuf =false use_sysroot=false'
  • 您有没有发现 X11 链接器错误?我猜你只需要安装一些交叉编译库,但我也想知道哪些。 ;)
  • 我在网上尝试了很多解决方案,但都没有奏效。通过您的简单解决方案,我终于能够构建它。谢谢!
  • 您能否告诉我是否有某些 .o 文件未包含在构建的 libwebrtc.a 中,那么该怎么办?我很简单 gn gen out/Default --args='is_debug=false rtc_use_h264=true target_cpu="x64" target_os="linux" clang_use_chrome_plugins=false use_ghash=false symbol_level=2 use_custom_libcxx=false is_component_ffmpeg=true ffmpeg_branding="Chrome" rtc_include_tests=false rtc_build_examples=true rtc_build_tools=false use_rtti=true rtc_enable_protobuf=false rtc_use_h264=true rtc_link_pipewire=trueproprietary_codecs=true' 和ninja -C . webrtc
【解决方案2】:

使用 conda 创建一个 python2 环境

$ conda create -n yourenvname python=2.7

创建文件夹并进入

$ mkdir webrtc $ cd webrtc

克隆仓库工具

$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git --depth 1

将其添加到路径

$ export PATH=$PATH:/home/ME/webrtc/depot_tools/

下载源....很多时间和空间

$ fetch --nohooks webrtc

$ cd src $ git clean -f

获取你要编译的版本

$ git ls-remote https://chromium.googlesource.com/external/webrtc --heads branch-heads/72 80865776cf8a1a811166ee005951b7f5b01deacd refs/branch-heads/72 $ gclient sync --force --revision 80865776cf8a1a811166ee005951b7f5b01deacd

$ ./install-build-deps.sh $ gclient runhooks

为 X64 编译

$ gn gen out/x64_72 --args='is_debug=true rtc_include_tests=false treat_warnings_as_errors=false use_rtti=true is_component_build=false enable_iterator_debugging=false is_clang=false use_sysroot=false linux_use_bundled_binutils=false use_custom_libcxx=false use_custom_libcxx_for_host=false target_os="linux" target_cpu="x64"' $ cd ./out/x64_72 $ ninja -C . -j 8

编译 FOR ARM64

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

$ gn gen out/arm64_72 --args='is_debug=false enable_iterator_debugging=false treat_warnings_as_errors=false rtc_include_tests=false target_os="linux" target_cpu="arm64" is_clang=true ' $ cd ./out/arm64_72 $ ninja -C . -j 8

祝你好运

【讨论】: