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


相关推荐

  • ASP.NET Session详解[通俗易懂]

    ASP.NET Session详解[通俗易懂] (一)描述当用户在Web应用程序中导航ASP.NET页时,ASP.NET会话状态使您能够存储和检索用户的值。HTTP是一种无状态协议。这意味着Web服务器会将针对页面的每个HTTP请求作为独立的请求进行处理。服务器不会保留以前的请求过程中所使用的变量值的任何信息。ASP.NET会话状态将来自限定时间范围内的同一浏览器的请求标识为一个会话,当每个用户首次与这台W

    2022年7月15日
    12
  • VSCode安装教程(超详细)[通俗易懂]

    VSCode安装教程(超详细)[通俗易懂]VSCode安装教程(超详细)下载安装一、同意协议(废话了我)二、选择合适的安装位置,下一步三、下一步四、这里注意下,进行相关的选择五、点击安装六、等待安装完成,很快配置中文界面上面安装完成后会出现下面的界面,我们搜索Chinese,点击install然后Restart重启后就ok了,中文界面下载下载地址:DownloadVisualStudioCode选择相应的版本下载。安装跟着图一步步走,简单明了。一、同意协议(废话了我)二、选择合适的安装位置,下一步三、下一步四

    2022年8月22日
    5
  • 2019-1024杂记「建议收藏」

    今天1024,程序员的节日。这个节日对我来说从陌生到熟悉,在到自己成为节日的“主角”。想到自己选择的工作,程序员的工作,有时候真的是自己想干的嘛,其实我也不知道。由于历史的某个偶然的选择,成就了当下的必然结果。当下的某个选择,又会影响未来的发展。被时间裹挟向前一年复一年…

    2022年2月28日
    41
  • centos7查看防火墙命令

    centos7查看防火墙命令一 防火墙的开启 关闭 禁用命令 1 设置开机启用防火墙 systemctlena service 2 设置开机禁用防火墙 systemctldis service 3 启动防火墙 systemctlsta 4 关闭防火墙 systemctlsto 5 检查防火墙状态 systemctlsta 二 使用 firewall cmd 配置端口 1

    2025年7月9日
    1
  • offsetwidth111[通俗易懂]

    offsetwidth是包括border、padding等,即盒模型尺寸。(所以遇到offsetWidth和border同时出现的时候要考虑一下会不会导致出错)一个小实验当div宽高200px,border为1px的时候,在给div添加一个变窄的定时器事件的时候,使用语句:div.style.width=div.offfsetWidth-1+‘px’,会发现,div在变宽。究其原因:s…

    2022年4月14日
    43
  • java idea激活密钥2021破解方法

    java idea激活密钥2021破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    221

发表回复

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

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