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

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

一、前言

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

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

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

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

二、编译步骤

下载源码
  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系统下某个目录,然后使用下面的命令解压:

    cmd 复制代码
    tar -xJf XXX

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

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

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

    cmd 复制代码
    ./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. 运行下面的命令,完成编译

    cmd 复制代码
    make -j$(nproc)

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

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

    cmd 复制代码
    make install

三、心灵的救赎

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

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

相关推荐
康熙38bdc1 小时前
Linux 进程优先级
linux·运维·服务器
hhzz1 小时前
Linux Shell编程快速入门以及案例(Linux一键批量启动、停止、重启Jar包Shell脚本)
android·linux·jar
只是有点小怂1 小时前
parted是 Linux 系统中用于管理磁盘分区的命令行工具
linux·运维·服务器
三枪一个麻辣烫2 小时前
linux基础命令
linux·运维·服务器
cuisidong19972 小时前
如何在 Kali Linux 上安装 Google Chrome 浏览器
linux·运维·chrome
光通信学徒3 小时前
ubuntu图形界面右上角网络图标找回解决办法
linux·服务器·ubuntu·信息与通信·模块测试
南种北李3 小时前
Linux自动化构建工具Make/Makefile
linux·运维·自动化
小飞猪Jay3 小时前
面试速通宝典——10
linux·服务器·c++·面试
暗恋 懒羊羊4 小时前
Linux 生产者消费者模型
linux·开发语言·ubuntu
安红豆.5 小时前
Linux基础入门 --13 DAY(SHELL脚本编程基础)
linux·运维·操作系统