FFmpeg交叉编译

一、使用debian社区的交叉编译器

1. 根据自己的需要选择32位和64位交叉编译器,比如在debian10-x64上默认源里有gcc-mips-linux-gnu 和 gcc-mips64el-linux-gnuabi64之类的。
2. 编译选项:和架构相关的选项主要就是--target-exec --cross-prefix --cc --arch 和--optflags或者--extra-cflags --extra-ldflags指定的具体编译连接选项。需要注意这些选项之间不能冲突,下面举几个实例:

  • 编译64位的选项:../ffmpeg/configure --target-exec='/usr/bin/qemu-mips64el -cpu 74Kf -L /usr/mips64el-linux-gnuabi64/' --samples=../../fate-suite/ --enable-gpl --cross-prefix=/usr/mips64el-linux-gnuabi64/bin/ --cc=mips64el-linux-gnuabi64-gcc-8 --arch=mips64el --target-os=linux --optflags='-O3 -g -mabi=64 -static' --enable-cross-compile --disable-pthreads --disable-iconv --enable-static --extra-ldflags='-static'
  • 编译32位的选项:../../ffmpeg/configure --samples=../../fate-suite/ --target-exec='/usr/bin/qemu-mips -cpu 74Kf -L /usr/mips-linux-gnu/' --cross-prefix=/usr/mips-linux-gnu/bin/ --cc=mips-linux-gnu-gcc-8 --arch=mips --target-os=linux --optflags='-O3 -g -static' --extra-ldflags='-static' --enable-cross-compile --enable-static --enable-gpl --disable-pthreads --disable-iconv --disable-mipsfpu

3. 采用qemu环境进行验证,通过--target-exec制定了qemu作为执行目标环境,前述实例的编译选项中还加了“--enable-static --extra-ldflags='-static'” ,目的就是为了避免使用qemu进行验证的时候出现动态库连接问题。如果客户最终是其他实体环境,则需要针对性的修改--target-exec选项参数。
4. qemu环境在debian10-x64的默认源上也是有的,user模式下执行只需要安装qemu-user,如果是系统模式下执行则需要安装对应的包,例如qemu-system-mips64el.

二、使用龙芯交叉编译器

1、下载交叉编译器

可以在龙芯开源社区交叉编译器页面查找自己所需的版本:Cross-compile

本测试选择的是“gs464核linux交叉编译器(gcc-7.3.1)”,该版本支持MSA和MMI的编译,下载地址:http://ftp.loongnix.org/toolchain/gcc/release/mips-loongson-gcc7.3-2019.06-29-linux-gnu.tar.gz

2、环境设置

下载下来之后,将编译器tar包解压出来,设置PATH变量即可。(本次测试使用的主机信息:CPU i7-3770, OS debian10)

CROSS_PATH=path_to_your_cross_compiler/mips-loongson-gcc7.3-linux-gnu/2019.06-29

export PATH=$CROSS_PATH/bin:$PATH

3、编译FFmpeg

configure选项:configure --cross-prefix=mips-linux-gnu- --enable-cross-compile --arch=mips64el --target-os=linux --extra-cflags="-O3 -g -mabi=64" --extra-ldflags="-O3 -g -mabi=64"

说明:上面列出来了关键的选项,这里编译的是64位的ffmpeg,其他的configure选项可以根据自己需求进行添加

本页面最后修改于2021年4月12日 (星期一) 20:04。

© 2021 by 龙芯开源社区 • Powered by MediaWiki
京ICP备14017781号-2