ffmpeg-rockchip 交叉编译 移植到 rk3588s QuarkPi-CA2_SDK_v1.0

178 阅读1分钟

下载

git clone --depth=1 https://github.com/nyanmisaka/ffmpeg-rockchip.git ffmpeg

准备 sysroot

将 QuarkPi-CA2_SDK_v1.0 生成的 rootfs.img 挂载 mnt 目录

创建目录

mkdir ~/mnt

挂载

sudo mount -o loop rootfs.img ~/mnt

修正 libm.so 软链接

sudo ln -sf libm.so.6 ~/mnt/usr/lib/aarch64-linux-gnu/libm.so

设置 pkg-config 相关环境变量

使用主机上的 pkg-config,到 sysroot 下查找 libdrm、rkmpp、rkrga 库

export PKG_CONFIG_SYSROOT_DIR=/home/lingke/mnt

export PKG_CONFIG_PATH=/home/lingke/mnt/usr/lib/aarch64-linux-gnu/pkgconfig

配置

./configure \
  --prefix=/home/lingke/projects/rk3588s_install_path/ffmpeg \
  --enable-gpl \
  --enable-version3 \
  --enable-libdrm \
  --enable-rkmpp \
  --enable-rkrga \
  --enable-libv4l2 \
  --enable-cross-compile \
  --target-os=linux \
  --arch=aarch64 \
  --cross-prefix=aarch64-rockchip1031-linux-gnu- \
  --enable-static \
  --enable-shared \
  --pkg-config=/usr/bin/pkg-config \
  --sysroot=/home/lingke/mnt \
  --extra-cflags="-I/home/lingke/mnt/usr/include/aarch64-linux-gnu" \
  --extra-ldflags="-B/home/lingke/mnt/usr/lib/aarch64-linux-gnu -Wl,-rpath-link=/home/lingke/mnt/usr/lib/aarch64-linux-gnu"

编译

make -j

安装

make install

将编译好的 ffmpeg 复制到根文件系统

(base) lingke@yjzx:~/projects/rk3588s/debian11_sdk$ tree -L 2 .
.
├── QuarkPi-CA2_SDK_v1.0
│   ├── build.sh
│   ├── debian
│   ├── device
│   ├── external
│   ├── kernel
│   ├── out
│   ├── prebuilts
│   ├── rkbin
│   ├── rkpacktools
│   └── u-boot
└── QuarkPi-CA2_SDK_v1.0.tar.xz

10 directories, 2 files

复制到 QuarkPi-CA2_SDK_v1.0/debian/overlay 目录下

(base) lingke@yjzx:~/projects/rk3588s/debian11_sdk/QuarkPi-CA2_SDK_v1.0$ tree -L 1 ./debian/
./debian/
├── binary
├── linaro-bullseye-alip-20250206-1.tar.gz
├── linaro-rootfs.img
├── mk-base-debian.sh
├── mk-image.sh
├── mk-rootfs-bullseye.sh
├── overlay
├── packages
├── post-build.sh
├── readme.md
└── ubuntu-build-service

4 directories, 7 files

(base) lingke@yjzx:~/projects/rk3588s/debian11_sdk/QuarkPi-CA2_SDK_v1.0/debian$ tree -L 2 ./overlay/
./overlay/
├── etc
│   ├── init.d
│   ├── NetworkManager
│   ├── profile
│   ├── profile.d
│   ├── pulse
│   ├── systemd
│   ├── udev
│   ├── X11
│   └── xdg
└── usr
    ├── bin
    ├── lib
    └── share

13 directories, 1 file

到 ffmpeg 安装目录下

cd /home/lingke/projects/rk3588s_install_path/ffmpeg

拷贝 include

cp -r ./include/ /home/lingke/projects/rk3588s/debian11_sdk/QuarkPi-CA2_SDK_v1.0/debian/overlay/usr

拷贝 lib

# 创建 aarch64-linux-gnu 目录
mkdir /home/lingke/projects/rk3588s/debian11_sdk/QuarkPi-CA2_SDK_v1.0/debian/overlay/usr/lib/aarch64-linux-gnu

# 到 lib 目录下
cd /home/lingke/projects/rk3588s_install_path/ffmpeg/lib

# 拷贝
cp -r ./* /home/lingke/projects/rk3588s/debian11_sdk/QuarkPi-CA2_SDK_v1.0/debian/overlay/usr/lib/aarch64-linux-gnu

拷贝 bin

# 到 bin 目录下
cd /home/lingke/projects/rk3588s_install_path/ffmpeg/bin

# 拷贝
 cp ./* /home/lingke/projects/rk3588s/debian11_sdk/QuarkPi-CA2_SDK_v1.0/debian/overlay/usr/bin