移植ffmpeg到jz2440(在开发板运行出现Illegal instruction,已解决,问题总结)

一,先编译x264,参考文章移植X264到JZ2440开发板

二,配置

./configure --prefix=/home/book/ffmpeg/ffmpeg-arm --arch=armel  --target-os=linux --cross-prefix=arm-none-linux-gnueabi- --enable-gpl --enable-nonfree  --extra-cflags=-I/home/book/ffmpeg/x264-arm/include --extra-ldflags=-L/home/book/ffmpeg/x264-arm/lib --enable-libx264  --enable-filter=delogo --enable-debug --disable-optimizations --enable-shared --enable-pthreads

三,

1.make

2.make install

四,然后把生成的lib目录下的so文件和bin下的可执行程序拷贝到制作文件系统fs_mini_mdev_new下相对应的lib和bin目录,然后制作成文件系统烧入板子里。这里我在板子运行出现Illegal instruction,暂未解决。

五,问题补充:

在执行make install之后,会在/home/book/ffmpeg/ffmpeg-arm/lib中有多个so文件,例如libavcodec-58.so,libavcodec.so.58.77.101,libavdevice-58.so。如果不想要这么多相类似的so文件,那么修改ffmpeg目录下的configure,

将该文件中的如下四行:(输入/SLIBNAME快速搜索定位)

SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR)$(SLIBNAME)'

修改成如下:

SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS='$(SLIBNAME)'

然后再make,make install

 

——————————————————————————————————————————————————————————————————————

关于在开发板中执行./ffmpeg时出现Illegal instruction问题处理fang方法总结:

1.通过arm-linux-readelf -A  ffmpeg ,查看ffmpeg是否支持VFP,如果支持的话是否支持VFPv3(因为有的支持VFPv2),这时候就要同时配置linux内核支持VFPv3(注意有的内核不支持VFPv3),这里参考文章https://blog.csdn.net/chyxwzn/article/details/8879750来处理。不过没有解决我的出现Illegal instruction问题。这里记录,也许以后其他情况能解决。

 

2.在ffmpeg源码配置如下:

./configure --prefix=/home/book/ffmpeg/ffmpeg-arm --disable-asm --disable-static --arch=armel  --target-os=linux --cross-prefix=arm-none-linux-gnueabi- --enable-gpl --enable-nonfree  --extra-cflags=-I/home/book/ffmpeg/x264-arm/include --extra-ldflags=-L/home/book/ffmpeg/x264-arm/lib --enable-libx264  --enable-filter=delogo --enable-debug --disable-optimizations --enable-shared --enable-pthreads

然后打开ffbuild/config.mak,把-O3和-O2的配置选项都去掉,并且查看你的交叉编译工具链中编译器路径(这里以我的为例)/work/tools/gcc-3.4.5-glibc-2.3.6/arm-none-linux-gnueabi/libc里是否存在armv*的目录,这里我的是armv4t,所以就要把这个armv4t替换下ffbuild/config.mak里的-march=armv4t(我这里是armv5t),如图:

原来是-march=armv5t,然后我改成-march=armv4t(这个参数要和你的编译器里的一样),然后make,make install,然后在板子里成功解决Illegal instruction。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值