webrtc交叉编译嵌入式的方法

这篇具有很好参考价值的文章主要介绍了webrtc交叉编译嵌入式的方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景是我们有嵌入式的需求,需要编译webrtc进入板子上。先说结论,最后是这样config之后就编译通过的:

gn gen out/linux-yeshen --args=‘target_os=“linux” target_cpu=“arm64” ffmpeg_branding=“Chrome” proprietary_codecs=true is_debug=true target_sysroot=“…/…/linux/general_yeshen_arm64/aarch64-buildroot-linux-gnu/sysroot” rtc_use_pipewire=false rtc_use_x11=false’

查看编译选项

gn args out/linux-yeshen --list

主要处理点:

  1. target_sysroot 需要设置为嵌入式板子的sysroot。
  2. target_cpu 需要设置为版子的cpu类型,可选的有 arm64、arm
  3. 看看有哪些编译选项不支持的,逐一关闭即可。比如rtc_use_pipewire是linux上获取桌面相关的服务,可以直接关掉。

这样就完成了~


其他注意点:

  1. 如果要使用android的toolschain,可以这样指定
custom_toolchain="//build/toolchain/android:clang_arm64"
# custom_toolchain="//build/toolchain/linux:clang_arm64"

如果不在常见的支持列表中(arm64/arm32/amd64/x86),可以这样指定出来,然后写一些 config.gni

  1. 特殊报错处理:

In file included from …/…/modules/rtp_rtcp/source/yeshen.h:72:
…/…/third_party/llvm-build/Release+Asserts/lib/clang/15.0.0/include/emmintrin.h:14:2:
error: “This header is only meant to be used on x86 and x64 architecture”
#error “This header is only meant to be used on x86 and x64 architecture”

如果遇到这类错误,大概率是引错头文件了(引了x86的头文件),处理下相关的import即可。llvm是无辜的,不用看llvm相关的设置。

  1. 如果遇到这个报错:

python3 “…/…/build/toolchain/gcc_link_wrapper.py” --output=“py_quality_assessment/quality_assessment/fake_polqa” – …/…/third_party/llvm-build/Release+Asserts/bin/clang++ -fuse-ld=lld -Wl,–fatal-warnings -Wl,–build-id -fPIC -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,–color-diagnostics -Wl,–no-call-graph-profile-sort --target=aarch64-linux-gnu -no-canonical-prefixes -Wl,–gdb-index -rdynamic -Wl,-z,defs -Wl,–as-needed -nostdlib++ --sysroot=…/…/build/linux/general_yeshen_arm64/aarch64-buildroot-linux-gnu/sysroot -pie -Wl,–disable-new-dtags -o “py_quality_assessment/quality_assessment/fake_polqa” -Wl,–start-group @“py_quality_assessment/quality_assessment/fake_polqa.rsp” -Wl,–end-group -ldl -lpthread -lrt

ld.lld: error: cannot open crtbeginS.o: No such file or directory
ld.lld: error: unable to find library -lgcc
ld.lld: error: unable to find library -lgcc
ld.lld: error: cannot open crtendS.o: No such file or directory
clang++: error: linker command failed with exit code 1 (use -v to see invocation)

说明缺少了这三个文件:crtbeginS.o、libgcc、crtendS.o,可以连接提供sysroot的供应商补充。
也可以自己把ln -s相关文件到 ../../build/linux/general_yeshen_arm64/aarch64-buildroot-linux-gnu/sysroot/usr/lib 目录下。

玩~文章来源地址https://www.toymoban.com/news/detail-677055.html

到了这里,关于webrtc交叉编译嵌入式的方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【正点原子FPGA连载】第十章Petalinux构建Qt和OpenCV交叉编译开发环境 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Linux开发指南

    1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=692450874670 3)全套实验源码+手册+视频下载地址: http://www.openedv.com/thread-340252-1-1.html 如果读者用过2019.1之前的Petalinux,会知道在设置Petalinux工作环境变量后可以直接使用arm或aarch64的linux交叉编译

    2024年02月07日
    浏览(67)
  • ARM嵌入式编译器编译优化选项 -O

    Arm嵌入式编译器可以执行一些优化来减少代码量并提高应用程序的性能。不同的优化级别有不同的优化目标,不仅如此,针对某个目标进行优化会对其他目标产生影响。比如想减小生成的代码量,势必会影响到该代码的性能。所以优化级别总是这些不同目标(代码量,程序性

    2024年02月16日
    浏览(59)
  • 嵌入式:ARM常用开发编译软件介绍

    ADS(ARM Developer Suite),是在1993年由Metrowerks公司开发是ARM处理器下最主要的开发工具。 他的前身是SDT,SDT是ARM公司几年前的开发环境软件,目前SDT早已经不再升级。ADS包括了四个模块分别是:SIMULATOR;C 编译器;实时调试器;应用函数库。ADS对汇编、C/C++、java支持的均很好,

    2024年02月06日
    浏览(62)
  • 【ARM 嵌入式 编译系列 2.1 -- GCC 编译参数学习】

    请阅读 【ARM GCC 编译专栏导读】 上篇文章:ARM 嵌入式 编译系列 2 – GCC 编译过程介绍 下篇文章:ARM 嵌入式 C 入门及渐进 3 – GCC attribute ((weak)) 弱符号使用 上篇文章 ARM 嵌入式 编译系列 2 – GCC 编译过程介绍 已经介绍过了具体的编译流程,本篇文章主要介绍变过程中常见的

    2024年02月13日
    浏览(41)
  • (嵌入式c语言)c语言编译常见错误

    预处理(gcc -E -o)-编译(gcc -S -o)-汇编(gcc -c -o)-链接(gcc -o) 将代码中的define 和 include替换成实体码  define和include不是,是在编译过程中处理的。 包含 #include 包含头文件 宏 #define 宏  替换  不会进行语法检查 #define 宏  宏体   宏体要加括号 #define ABC 

    2024年02月11日
    浏览(40)
  • 嵌入式-vim编辑器 gcc编译器

    目录 一.vim编辑器 1.1简介 1.2使用说明 1.2.1复制、粘贴与删除 1.2.2保存 二.gcc编译器 2.1基本介绍 2.2编译原理

    2024年02月09日
    浏览(44)
  • 【ARM 嵌入式 编译系列 10.4 -- 生成二进制文件】

    在嵌入的工作中,经常会使用到二进制文件,那么我们如何自己生成一个二进制文件呢?接下来介绍如何将一个只包含将32位数据的文件转化为二进制文件,原文件如下(数据一共 64bytes): 我们使用 gcc 对齐先进行编译然后再进行反汇编: 具体命令如下: 通过上面命令会生成

    2024年02月02日
    浏览(51)
  • 【ARM 嵌入式 编译系列 3.5 -- gcc 链接参数介绍】

    请阅读 【嵌入式开发学习必备专栏 之 ARM GCC 编译专栏】 上篇文章【ARM 嵌入式 编译系列 3.4 – 查看所依赖库文件的路径 详细介绍】一直在提 链接参数 ,那么链接参数有哪些,它们又有什么作用呢? 如前一篇文章中的的链接参数到底是什么意思呢? -L : 指定了 链接库的路径

    2024年01月17日
    浏览(44)
  • 【ARM 嵌入式 编译系列 10 -- GCC 编译缩减可执行文件 elf 文件大小】

    请阅读 【ARM GCC 编译专栏导读】 上篇文章:ARM 嵌入式 编译系列 9-- GCC 编译符号表(Symbol Table)的详细介绍 下篇文章:ARM 嵌入式 编译系列 10.1 – GCC 编译缩减可执行文件 elf 文件大小 在开发过程总,总是希望编译出来的可执行文件尽量小,因为这样可以节省更多的磁盘空间

    2024年02月09日
    浏览(52)
  • 【ARM 嵌入式 编译系列 4.1 -- GCC 编译属性 likely与unlikely 学习】

    请阅读 【ARM GCC 编译专栏导读】 上篇文章:ARM 嵌入式 编译系列 4 – GCC 编译属性 __read_mostly 介绍 下篇文章: ARM 嵌入式 编译系列 4.2 – GCC 链接规范 extern “C“ 介绍 likely 和 unlikely 是GCC编译器提供的一种代码优化特性,这两个宏用于告诉编译器某个条件判断的结果是真还是假

    2024年02月12日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包