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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm配色方案下载_sublime修改字体大小

    pycharm配色方案下载_sublime修改字体大小话不多说,先看效果图python中设置配色基本流程都差不多,版本不一样,但是基本设置也是大同小异步骤如下:第一步:File→Settings→Appearance&Behavior→Theme:Darcula→OK第二步:File→Settings→Editor→ColorScheme→ColorSchemeFont→Sche…

    2022年8月27日
    4
  • MySQL索引原理及BTree(B-/+Tree)结构详解「建议收藏」

    MySQL索引原理及BTree(B-/+Tree)结构详解「建议收藏」目录摘要数据结构及算法基础索引的本质B-Tree和B+TreeB-TreeB+Tree带有顺序访问指针的B+Tree为什么使用B-Tree(B+Tree)主存存取原理磁盘存取原理局部性原理与磁盘预读B-/+Tree索引的性能分析MySQL索引实现MyISAM索引实现InnoDB索引实现索引使用策略及优化示例数据库最左前缀原理与…

    2022年6月24日
    28
  • 避免硬编码[通俗易懂]

    避免硬编码[通俗易懂]第一种publicinterfaceConstants{/***SparkApplicationConstants*/StringSEPARATOR=””;StringSQLTYPE=”‘通话'”;}第三种importjava.util.Propertiesimport…

    2022年10月19日
    3
  • B样条曲线拟合原理「建议收藏」

    B样条曲线拟合原理「建议收藏」1.与贝塞尔曲线对比B样条曲线是在Bezier曲线基础上发展起来的一类曲线,它克服了Bezier曲线整体控制性所带来的不便,最常用的是二次和三次B样条曲线。2.二次B样条2.1参数方程已知三个平面离散点P0、P1、P2,由这三点可以定义二次抛物线段,其参数矢量方程形式为:二次B样条曲线参数方程的矩阵形式为:对比着看,

    2022年6月18日
    68
  • IntelliJ IDEA安装操作步骤

    IntelliJ IDEA安装操作步骤一、下载安装1、打开官网:http://www.jetbrains.com/idea/,点击页面中的“DOWNLOAD”2、根据自己的需要选择下载的IntelliJIDEA版本,此处我的电脑是Windows764位的,我选择的是Community(社区版)3、双击下载好的安装包4、点击“Next”5、选择安装位置,然后点击“Next”6、勾选安装选型,然后点击“Next…

    2022年6月29日
    99
  • Object类11种方法

    Object类11种方法Object 类 11 种方法 部分方法讲解

    2025年6月18日
    4

发表回复

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

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