MIPS ffmpeg Illegal instruction 问题

8 篇文章 1 订阅
3 篇文章 0 订阅

问题描述

在mips平台上,运行程序链接ffmpeg的动态库时,程序随机的一些位置发生
Illegal instruction
错误,然后程序退出

解决方式

[root]# cat /proc/cpuinfo | grep mips
isa : mips32r1

查看CPU信息,指令集为mips32r1,对应到ffmpeg的configure选项当中时,没有对应的cpu架构与之匹配,只有

ARCH_EXT_LIST_MIPS="
    mipsfpu
    mips32r2
    mips32r5
    mips64r6
    mipsdspr1
    mipsdspr2
    msa
"

并且有24kc/24kf/24kec...等等cpu架构可以禁用某些优化选项,例如

  --disable-mips32r5       disable MIPS32R5 optimizations
  --disable-mips64r6       disable MIPS64R6 optimizations
  --disable-mipsdspr1      disable MIPS DSP ASE R1 optimizations
  --disable-mipsdspr2      disable MIPS DSP ASE R2 optimizations
  --disable-mipsfpu        disable floating point MIPS optimizations

那通过修改configure脚本,指定arch和cpu,同时disable一些优化选项,设置configure命令如下:
./configure \
			--prefix=${INSTALL_DIR} \
			--cross-prefix=${CROSS_PREFIX} \
			--arch=mips \
			--disable-mipsdsp \
			--disable-mipsdspr2 \
			--disable-mips32r2 \
			--disable-mipsfpu  \
			--disable-mips64r2  \
			--disable-mips32r6  \
			--target-os=linux  \
			--enable-cross-compile \
			--disable-everything \
			--disable-programs \
			--disable-avdevice \
			--disable-filters \
			--disable-runtime-cpudetect \
			--disable-doc \
			--disable-muxers \
			--enable-muxer=mpegts \
			--enable-muxer=mp4 \
			--enable-muxer=wav \
			--disable-demuxers \
			--enable-demuxer=mov \
			--disable-protocols \
			--enable-protocol=file \
			--disable-static \
			--enable-shared \
			--enable-avresample \
			--enable-swscale \
			--enable-encoder=aac \
			--disable-zlib \
			--disable-yasm \
			--disable-swresample \
			--disable-avfilter \
			--disable-iconv \
			--disable-debug			

可以正常编译和运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值