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非法指令的解决思路[通俗易懂]

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • podman快速入门详解与实践

    podman快速入门详解与实践

  • 应用程序已被 JAVA 安全阻止的解决办法

    应用程序已被 JAVA 安全阻止的解决办法当运行程序的时候有这样的弹窗出现时    到控制面板中的程序里面选择Java    在弹窗的安全中进行设置,把安全级别调到高或者中,或者在编辑站点列表中添加url也可以,点击应用和确认后设置生效    …

  • java数据库调用「建议收藏」

    1.概念:JavaDatabaseConnectivity java数据库连接​ 本质:其实是官方(SUN公司)提供的一套操作所有关系型数据库的规则(接口),各个数据库厂商会去实现这套接口,产生数据库驱动(Jar包),我们可以使用这套接口(JDBC)编程,真正执行的代码驱动包里的实现类。2.快速入门​ 1.导入jar包 mysql-connector-java-5.1.37-bin….

  • 腾讯ssl 免费证书_手机云证书

    腾讯ssl 免费证书_手机云证书SSL证书和我们日常用的身份证类似,是一个支持HTTPS网站的身份证明,SSL证书里面包含了网站的域名,证书有效期,证书的颁发机构以及用于加密传输密码的公钥等信息,由于公钥加密的密码只能被在申请证书时生成的私钥解密,因此浏览器在生成密码之前需要先核对当前访问的域名与证书上绑定的域名是否一致,同时还要对证书的颁发机构进行验证,如果验证失败浏览器会给出证书错误的提示。SSL证书对于网站数据的安全传输起…

  • Vue(3)webstorm代码格式规范设置与vue模板配置

    Vue(3)webstorm代码格式规范设置与vue模板配置编译器代码格式规范设置通常我们写代码时,代码缩进都是4个空格,但是在前端中,据全球投票统计,建议使用2个空格来进行代码缩进。首先我们打开webstorm中的设置,如果使用的是mac的同学直接使用c

  • eclipse连接SQL server数据库「建议收藏」

    1.准备,下载JDBC驱动程序要能够使用数据库就要有相应的JDBC驱动程序,然后到Microsoft官网下载https://www.microsoft.com/zh-cn/download/details.aspx?id=11774下载完成之后用解压工具解压之后点击该文件夹然后进入2.配置SQLsever是否可以sa登录,如果不是参考以下链接htt…

发表回复

您的电子邮箱地址不会被公开。

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