移植FFmpeg到RISC-V记录
...大约 1 分钟FFmpeg
./configure
一般手动编译分三步, configure 配置, make 编译 make install 安装
常规配置方法:
查看帮助选项./configure help
,如果帮助选项中有 build 选项,只需在命令行加 --build=riscv64-unknown-elf
少部分程序在 configure help 没有 build 选项,需要手动运行 config.guess脚本 ,检测系统体系结构。
riscv64-unknown-linux-gnu-gcc
1. 编译 yasm
yasm是一个 汇编编译器,后面编译 x264 需要用到它,它能加快编译速度。
进入解压过的yasm文件夹
./configure --prefix=/usr/local --build=riscv64-unknown-linux-gnu
2. 编译pkg-config
./configure --prefix=/usr/local --build=riscv64-unknown-linux-gnu --with-internal-glib
3. 编译 libx264
./configure --enable-shared --enable-static --prefix=/usr/local
ffmpeg编译configure
在ffmpeg目录下,查看所有可配置选项
./configure --help
–-arch
可以指定架构可选值可在configure里搜索
ARCH_LIST
查看--prefix
安装程序到指定目录(默认/usr/local)--cross-prefix
:编译工具路径--enable-cross-compile
:启用交叉编译器
./configure --cross-prefix=riscv64-unknown-linux-gnu-
--enable-cross-compile
--target-os=linux
--cc=riscv64-unknown-linux-gnu-gcc
--arch=riscv
--prefix=/usr/local/ffmpeg
--pkg-config=true
--pkgconfigdir=/usr/local/pkg-config
--enable-ffmpeg --disable-armv5te --disable-armv6 --disable-armv6t2
综合:
./configure --cross-prefix=riscv64-unknown-linux-gnu- --enable-cross-compile --target-os=linux --cc=riscv64-unknown-linux-gnu-gcc --arch=riscv --prefix=/usr/local/ffmpeg --pkg-config=true --pkgconfigdir=/usr/local/pkg-config --enable-ffmpeg --disable-armv5te --disable-armv6 --disable-armv6t2
报错记录
WARNING: riscv64-unknown-elf-pkg-config not found, library detection may fail.
collect2: error: ld returned 1 exit status
make: *** [Makefile:131: ffmpeg_g] Error 1
--pkg-config=true --pkgconfigdir=/usr/local/pkt-config
error: 'PATH_MAX' undeclared here (not in a function)
In file included from libavcodec/v4l2_buffers.c:34:
libavcodec/v4l2_m2m.h:44:18: error: 'PATH_MAX' undeclared here (not in a function)
44 | char devname[PATH_MAX];
| ^~~~~~~~
make: *** [ffbuild/common.mak:81: libavcodec/v4l2_buffers.o] Error 1
解决方案:
检查该文件,并引入头文件
#include <linux/limits.h>