ubuntu下交叉编译ffmpeg到目标架构为aarch架构的系统

Ubuntu下FFmpeg的aarch64-linux-gnu架构交叉编译教程

一、前言

有时候真的很想报警的,嵌入式算法部署花了好多时间了,RKNN 1808真是问题不少;甲方那边也是老是提新要求,真是受不了。

由于做目标检测,在C++代码中有对视频进行抽帧的需求,因此想要在C++代码和FFmpeg一起绑定了,于是用了Cmake工具。

下面介绍一下我的交叉编译环境:

  • 操作系统:Ubuntu 18.04
  • 系统架构:X86_64

二、编译步骤

  1. 下载源码
    1. 下载源码可点击【Download FFmpeg】,在该页面中Linux有多个操作系统选项,选择【Ubuntu – Official packages】点进去页面。

      在这里插入图片描述

    2. 然后滚动到页面底下,选择各版本的源码,一般来说稳定版比较好,我当时选择的是【7:6.0-6ubuntu1】,继续点进去页面。

      在这里插入图片描述

    3. 进入页面后往下面滚动一小会,找到Download标题,下载第一个包,我下载的是【https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/ffmpeg/7:6.0-6ubuntu1/ffmpeg_6.0.orig.tar.xz】,包不大,放心下载。

在这里插入图片描述

  1. 然后将下载的文件,拷贝到你的Linux系统下某个目录,然后使用下面的命令解压:

    tar -xJf XXX
    

    其中XXX是你下载下来的文件名,比如我的是【ffmpeg_6.0.orig.tar.xz】

  2. 编译安装
    1. 解压后,命令行,进入对应目录,先运行以下命令,赋予可执行权限:

      chmod +x configure
      
    2. 然后运行下面的命令,完成生成:

      ./configure --enable-cross-compile --target-os=linux --arch=arm64 \
      --cross-prefix=/17106/Pengcaiping/gcc-linaro-6.4.1-2017.08-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- \
      --cc=/17106/Pengcaiping/gcc-linaro-6.4.1-2017.08-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc \
      --cxx=/17106/Pengcaiping/gcc-linaro-6.4.1-2017.08-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ \
      --prefix=/17106/tools/LIBS/ffmpeg5.0.1_linux_arm64 \
      --disable-asm --enable-parsers --disable-decoders --enable-decoder=h264 --enable-decoder=aac \
      --disable-debug --enable-ffmpeg --enable-shared --disable-static --disable-stripping --disable-doc
      
      • 【–arch=arm64】表示目标架构为arm64,该架构等同于aarch64

      • 【–cross-prefix】指定交叉编译器的路径

      • 【–cc】指定C编译器的路径

      • 【–cxx】指定C++编译器的路径

      • 【–prefix】指定安装路径

      • 后面的参数便不用了解了,前面这些介绍了的都要进行明确指定,然后如果你还没有交叉编译器,就去下载

        可以去交叉编译器发布页【Linaro Releases】下载编译器,这里有很多版本,可以点带【latest】标志的文件夹进去

        在这里插入图片描述

        然后选择【 aarch64-linux-gnu】

        在这里插入图片描述

        接着选择【gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz】,这里跟你选择时,版本号可能有出入,然后就下载完成了。

        在这里插入图片描述

        下载后放到Ubuntu某个文件夹下进行,解压即可,解压后,可以仿照我的路径写交叉编译器的路径

    3. 运行下面的命令,完成编译

      make -j$(nproc)
      

      这个命令会启动多个编译进程,数量和你的处理器核心数相同,从而加速编译过程。

    4. 运行下面的命令完成安装

      make install
      

三、心灵的救赎

倘若你的眼镜真是这样冷,在你鉴照下,有个人的心会结成冰。——沈从文《月下》

刚刚好,看见你幸福的样子,于是幸福着你的幸福。——树上春树

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/556249.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Maven的dependencyManagement与dependencies区别

先说结论:Maven 使用dependencyManagement 元素来提供了一种管理依赖版本号的方式。 在maven多模块项目的pom文件中,有的小伙伴会发现最外层的pom文件和里面的pom文件有个地方不一样 如下图 父pom 子pom 一般来说是在maven的最外父工程pom文件里&…

压缩感知的概述梳理(4)

参考文献 A novel triple-image encryption and hiding algorithm based on chaos, compressive sensing and 3D DCT 文献内容 分析 结构 压缩感知 (CS) 的核心要素与流程 信号 x 长度:N表示法:(x \sum_{i1}^N u_i s_i) (u_i):正交基的第…

阿里云服务器上配置Docker 以及常用命令讲解

目录 一、认识docer二、在阿里云服务器上配置Docker三、底层原理4、常用命令(1)Docker中常见镜像命令(2)Docker中常见容器命令(3)日志查看命令(4)进入容器的命令与拷贝命令 一、认识…

Docker容器嵌入式开发:在Ubuntu上配置RStudio与R语言、可视化操作

目录 一、dirmngr工具二、R环境安装与配置三、验证是否安装成功四、安装Rstudio五、可视化操作参考 以上是在Ubuntu 18.04上安装最新版本的R语言环境的步骤摘要。首先,通过添加CRAN镜像源并安装GPG密钥来配置软件源。然后,更新软件包列表并通过apt安装R语…

svn使用(上传自己的项目到svn上)

安卓开发工具版本 创建项目后,首先在.gitgnore文件里面加入你要过滤的文件路径 然后点击VCS——》share Project,然后下一步选择一个svn路径,点击确定后。然后将代码提交。

团体程序设计天梯赛 往年关键真题 详细分析完整AC代码】L2-014 列车调度 STL L2-015 互评成绩 排序

【团体程序设计天梯赛 往年关键真题 详细分析&完整AC代码】搞懂了赛场上拿下就稳 【团体程序设计天梯赛 往年关键真题 25分题合集 详细分析&完整AC代码】(L2-001 - L2-024)搞懂了赛场上拿下就稳了 【团体程序设计天梯赛 往年关键真题 25分题合…

.NET 爬虫从入门到入狱

目录 前言 1.💡使用HttpClient爬取数据 2.🚀模拟User-Agent 3.🤵使用HTML解析库 3.👌前端Price显示 4.🌱运行实例 获取金价Au 5.🧾使用正则表达式解析 6.💫获取BTC价格 7.✨获取CSDN热点…

界面组件Telerik UI for WPF 2024 Q1新版亮点 - 全新DateRangePicker组件

Telerik UI for WPF拥有超过100个控件来创建美观、高性能的桌面应用程序,同时还能快速构建企业级办公WPF应用程序。UI for WPF支持MVVM、触摸等,创建的应用程序可靠且结构良好,非常容易维护,其直观的API将无缝地集成Visual Studio…

解决 vue install 引发的 failed Error: not found: python2 问题

发生 install 异常时,提示信息如下所示: npm ERR! code 1 npm ERR! path U:\cnblogs\fanfengping-dtops\fanfengping-dtops-front\node_modules\node-sass npm ERR! command failed npm ERR! command U:\Windows\system32\cmd.exe /d /s /c node scripts…

公网IP多少钱可以购买?

公网IP是指可以在全球范围内访问和识别的唯一IP地址。对于许多企业和个人用户来说,公网IP是实现远程访问、搭建服务器、建立安全连接等重要需求的基础。公网IP的获取并不是免费的,并且价格因供应商和地区而异。 现有公网IP市场 当前,市场上有…

STM32之不使用MicroLIB

一、microlib介绍 microlib 是缺省 C 库的备选库,功能上不具备某些 ISO C 特性。 microlib 进行了高度优化以使代码变得很小,功能比缺省 C 库少,用于必须在极少量内存环境下运行的深层嵌入式应用程序。 二、不使用microlib的原因 由于microlib不支持C++开发,因此在使用C…

PLC怎么接入互联网

几十年来,PLC都是用于现场设备的自动化控制。随着移动互联网技术的发展,移动办公的便捷性使PLC联网进行远程监控操作的需求越来越多。那PLC怎么接入互联网呢? PLC的通讯基本都是基于现场的通讯,无论是RS485,RS232还是 TCP协议&am…

传统外呼吃力不讨好?AI智能外呼降低85%人力成本!

前几天有电商的客户来咨询,他们每逢大促客服压力就激增,主要原因就是客服人员少,遇到这种高峰期根本来不及打电话,招新人的话培训时间长,算下来人力成本相当高。因此他们想借助智能外呼看能否解决这个难题。这种时候就…

【3GPP】【核心网】【LTE】史上最全 闲时被叫CSFB 深度分析

3.2 闲时被叫CSFB 3.2.1 闲时被叫CSFB基本流程 被叫CSFB消息附近通常有一条Paging寻呼,然后进行CSFB流程: (1)UE向MME发起拓展服务请求,同时上报TMSI和承载状态,该条消息的服务类型字段中会区分主/被叫&a…

风险解码:数字技术如何重塑风控游戏规则?

“IT有得聊”是机械工业出版社旗下IT专业资讯和服务平台,致力于帮助读者在广义的IT领域里,掌握更专业、更实用的知识与技能,快速提升职场竞争力。 点击蓝色微信名可快速关注我们! 数字风控概述 从2007年开始到2014年左右&#xf…

【GoWeb框架初探————Gin篇】

1. Gin 1.1 下载相应依赖 创建go项目,在项目下建立go.mod文件(若有则跳过) 命令行运行 go get github.com/gin-gonic/gin1.2 启动一个简单Web服务 package mainimport ("github.com/gin-gonic/gin""github.com/thinkerou/…

️️️Vue3+Element-Plus二次封装一个可定制化的table组件

前言 为什么需要二次封装 开发后台管理系统,会接触到很多表格和表单,一但表格表单多起来,仅仅只需要一小部分改变,都需要在中重写一大堆代码,许多重复逻辑,我们可以把重复逻辑抽离出来二次封装一个组件 使用,减少在开发中需要编写的代码。 为什么需要定制化 每个…

Springboot Gateway 报错Failed to resolve “bogon”的原因及解决办法

一、问题出现原因及初步分析 今天遇到一个奇怪的错误,一个一直正确运行的微服务后台,突然无法访问,如何重启都会报错。 想到近期有人在服务器上安装过其它服务,因此,考虑可能是配置问题,可配置问题修复后…

Ubuntu 传输文件

scp [选项] 源文件 目标路径 以下是一些常用的 scp 命令选项: -r:递归复制目录和子目录。 -P:指定远程 SSH 服务器的端口号。 -i:指定用于身份验证的私钥文件。 -p:保留源文件的时间戳、权限和所有者。 -v&#x…

从D盘调整空间增加到C盘而不丢失数据的3 种方法

越来越多的Windows 10笔记本电脑和台式机使用SSD作为系统盘,这对于提高计算机性能很有用,因为SSD的读写速度要快得多。但另一方面,SSD价格更高,因此比传统机械硬盘体积更小。当然C盘空间不足的可能性更大。在这种情况下&#xff0…