illegal instruction非法指令的解决思路[通俗易懂]

转自:http://blog.csdn.net/chyxwzn/article/details/8879750我移植x264到开发板上,armlinux系统。移植好后将库都拷贝到nfs文件系统上,可是执行后出现illegalinstruction的错误。可能是x264配置问题,我的x264开始的编译配置是./configure –host=arm-none-linux-gn

大家好,又见面了,我是你们的朋友全栈君。

转自:
http://blog.csdn.net/chyxwzn/article/details/8879750

我移植x264到开发板上,arm linux系统。移植好后将库都拷贝到nfs文件系统上,可是执行后出现illegal instruction的错误。

可能是x264配置问题,我的x264开始的编译配置是

./configure  –host=arm-none-linux-gnueabi  –cross-prefix=arm-linux-  –prefix=/opt/x264-arm  –enable-shared  –enable-static

illegal instruction非法指令的解决思路[通俗易懂]

illegal instruction非法指令的解决思路[通俗易懂]

这是配置之后的属性,注意一点asm为yes,这是为特定平台的汇编优化,看看编译后的效果。

illegal instruction非法指令的解决思路[通俗易懂]

illegal instruction非法指令的解决思路[通俗易懂]

这个-mcpu=cortex-a8 -mfpu=neon

illegal instruction非法指令的解决思路[通俗易懂]

illegal instruction非法指令的解决思路[通俗易懂]

程序的平台属性,VFP_arch: VFPv3 Advanced_SIMD_arch: NEONv1

正确的平台属性是

illegal instruction非法指令的解决思路[通俗易懂]

illegal instruction非法指令的解决思路[通俗易懂]

所以把配置改为

illegal instruction非法指令的解决思路[通俗易懂]

illegal instruction非法指令的解决思路[通俗易懂]illegal instruction非法指令的解决思路[通俗易懂]

Using -mfloat-abi=hard with VFP coprocessors is not supported. Use -mfloat-abi=softfp with the appropriate -mfpu option to allow the compiler to generate code that makes use of the hardware floating-point capabilities for these CPUs.

可是这样编译完之后还是提示非法指令,这是因为什么呢?怎么调试呢?

首先内核编译时应该开启user_debug功能,然后在内核启动项里添加user_debug=1,然后会增加出错信息

会增加pc=00009f78, code: 001980dc 000014ac 00000160 e92d4ff0 (ed2d8b04)

反汇编看看到底是哪里出错的,arm-linux-objdump -D -S x264 > log,然后查看log,相关内容是

illegal instruction非法指令的解决思路[通俗易懂]

illegal instruction非法指令的解决思路[通俗易懂]

错误出在指令vpush {d8-d9}上,google一下vpush指令,在arm information center里的描述

illegal instruction非法指令的解决思路[通俗易懂]

illegal instruction非法指令的解决思路[通俗易懂]

这个指令是NEON架构和VFP共享的指令,是都支持的,那为什么出错呢?

illegal instruction非法指令的解决思路[通俗易懂]

illegal instruction非法指令的解决思路[通俗易懂]

s3c6410支持vfp指令,是在协处理器里支持的,然后又看到

illegal instruction非法指令的解决思路[通俗易懂]

illegal instruction非法指令的解决思路[通俗易懂]

这句话不就是说之所以出错,被识别为非法指令是因为我没有配置协处理器支持vfp指令吗?那肯定就是在内核里配置了,

illegal instruction非法指令的解决思路[通俗易懂]illegal instruction非法指令的解决思路[通俗易懂]

illegal instruction非法指令的解决思路[通俗易懂]

illegal instruction非法指令的解决思路[通俗易懂]

这是linux内核的浮点仿真器,需要在里面选择vfp,这样内核才会支持vfp指令。

也就是说要执行vfp指令需要内核和交叉编译器都配置支持vfp指令。这样重新编译后就可以执行程序了

illegal instruction非法指令的解决思路[通俗易懂]

illegal instruction非法指令的解决思路[通俗易懂]

只是我发现编码还是好慢,还得用硬件编码器才行。这个问题算是增加我的调试错误经验了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/126386.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Anycast

    AnycastAliDNS(www.alidns.com)近期上线。看到同事说更换localDNS后,访问淘宝明显快了。以我当前的理解能力,认为无非是快在DNS解析这一步上,缩短的时间应该在毫秒级别,而浏览器与淘宝集群之间的延时应该不会有变化。但试了后,果然明显感觉变快了。好奇心驱使,学习了下Anycast技术。当然,AliDNS还采用了集群缓存共享的设计…

    2022年5月24日
    99
  • laravel 中first和find区别(总结一)

    laravel 中first和find区别(总结一)

    2021年11月10日
    49
  • 谷歌学术使用方法_想用谷歌浏览器怎么办

    谷歌学术使用方法_想用谷歌浏览器怎么办谷歌学术简明使用说明源PDF文件下载链接:https://github.com/zjcao/books/blob/master/google_scholar_instructions.pdf

    2022年10月11日
    2
  • Levels – 虚幻引擎场景制作「建议收藏」

    Levels – 虚幻引擎场景制作「建议收藏」个人制作的一个UE4场景,虚幻引擎4相关,3D场景制作相关,LA工作流程相关;文档所附视频展示:https://zhuanlan.zhihu.com/p/56903372

    2022年6月22日
    32
  • 零基础入门STM32编程(二)

    零基础入门STM32编程(二)前情回顾上篇文章初步认识了STM32,了解了STM32的分类及型号命名规则,本篇内容继续STM32串口编程入门学习。一走进STM321.1STM32系列STM32单片机分为四类五种,四类介绍参见上一篇文章,本文仅阐述五个系列,分别为:STM32F0系列是针对8位和16位微控制器的32位MCU替代产品,对于工程人员来说非常有吸引力,他们希望其产品平台不会过时,并可围绕工业标准ArmCortex-M0内核进行标准化开发。 STM32G0系列是基于ArmCortex-M0+核心的新..

    2025年9月27日
    4
  • bs与cs的区别简述_cs客户端和bs客户端

    bs与cs的区别简述_cs客户端和bs客户端荐java适合开发bs结构,cs不是它的强项.C/S是Client/Server的缩写。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、Informix或SQLServer。客户端需要安装专用的客户端软件。B/S是Brower/Server的缩写,客户机上只要安装一个浏览器(Browser),如NetscapeNavigator或Internet…

    2022年10月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号