Ubuntu下FFmpeg的aarch64-linux-gnu架构交叉编译教程
一、前言
有时候真的很想报警的,嵌入式算法部署花了好多时间了,RKNN 1808真是问题不少;甲方那边也是老是提新要求,真是受不了。
由于做目标检测,在C++代码中有对视频进行抽帧的需求,因此想要在C++代码和FFmpeg一起绑定了,于是用了Cmake工具。
下面介绍一下我的交叉编译环境:
- 操作系统:Ubuntu 18.04
- 系统架构:X86_64
二、编译步骤
下载源码
-
下载源码可点击【Download FFmpeg】,在该页面中Linux有多个操作系统选项,选择【Ubuntu -- Official packages】点进去页面。
-
然后滚动到页面底下,选择各版本的源码,一般来说稳定版比较好,我当时选择的是【7:6.0-6ubuntu1】,继续点进去页面。
-
进入页面后往下面滚动一小会,找到Download标题,下载第一个包,我下载的是【https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/ffmpeg/7:6.0-6ubuntu1/ffmpeg_6.0.orig.tar.xz】,包不大,放心下载。
-
然后将下载的文件,拷贝到你的Linux系统下某个目录,然后使用下面的命令解压:
cmdtar -xJf XXX
其中XXX是你下载下来的文件名,比如我的是【ffmpeg_6.0.orig.tar.xz】
编译安装
-
解压后,命令行,进入对应目录,先运行以下命令,赋予可执行权限:
cmdchmod +x configure
-
然后运行下面的命令,完成生成:
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某个文件夹下进行,解压即可,解压后,可以仿照我的路径写交叉编译器的路径
-
-
运行下面的命令,完成编译
cmdmake -j$(nproc)
这个命令会启动多个编译进程,数量和你的处理器核心数相同,从而加速编译过程。
-
运行下面的命令完成安装
cmdmake install
三、心灵的救赎
倘若你的眼镜真是这样冷,在你鉴照下,有个人的心会结成冰。------沈从文《月下》
刚刚好,看见你幸福的样子,于是幸福着你的幸福。------树上春树