Linux aarch64-linux-gnu-交叉编译x264、ffmpeg、opencv并移植
前沿:
1. 在一台ubuntu20.4系统上已经安装aarch64-linux-gnu交叉编译器。
2. 所有库编译引用路径应放置在移植不受影响的路径下,例如/opt/
路径下,任意linux平台均可存在或直接创建即可,或将x264
和ffmpeg
放入opencv
编译的指定路径下,本次编译移植过程全部放在/opt/
路径下。
3. 此次交叉编译平台的内核版本为Linux ubuntu 5.15.0-105-generic
,所以在移植到arm64
平台的内核版本应大于等于Linux ubuntu 5.15.0-105-generic
(不同的内核版本适配不同的 gcc/g++、cmake 版本)。
安装依赖
sudo apt --fix-broken install
# 安装gcc和g++
sudo apt-get install gcc-aarch64-linux-gnu
sudo apt-get install g++-aarch64-linux-gnu
1. x264
- 源码下载:x264
- 放置在
/opt/
路径下解压之后,执行命令安装编译,将编译的库放置在./x264/tmp
路径下:
cd ./x264/
./configure --host=aarch64-linux-gnu --prefix=$PWD/tmp --enable-shared --disable-asm
vi config.mak # 修改内容以支持交叉编译
CC=aarch64-linux-gnu-gcc
LD=aarch64-linux-gnu-gcc -o
AR=aarch64-linux-gnu-gcc-ar rc
RANLIB=aarch64-linux-gnu-gcc-ranlib
STRIP=aarch64-linux-gnu-strip
make && make install # 生成了bin/include/lib三个文件夹及其内容
2. ffmpeg
-
源码下载:ffmpeg-4.1.3
-
放置在
/opt/
路径下解压之后,执行命令安装编译,将编译的库放置在./ffmpeg-4.1.3/tmp
路径下:
cd ./ffmpeg-4.1.3/
./configure --enable-cross-compile --cross-prefix=aarch64-linux-gnu- \
--arch=arm64 --target-os=linux --cc=aarch64-linux-gnu-gcc --prefix=$PWD/tmp \
--enable-shared --enable-pic --disable-static --enable-gpl --enable-nonfree \
--enable-pthreads --enable-ffmpeg --disable-ffplay --enable-swscale \
--disable-armv5te --disable-armv6 --disable-armv6t2 --disable-stripping \
--enable-