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)
上一篇 2022年4月7日 下午4:20
下一篇 2022年4月7日 下午4:40


相关推荐

  • 进程调度算法–c语言实现

    进程调度算法–c语言实现nbsp nbsp 下面我用 c 语言模拟实现了 FCFS 先来先服务 SJF 短作业优先 和 RR 时间片轮转 的操作系统中的进程调度算法 还有实现结果哦 nbsp nbsp 关于这些算法的思想 大家可以去自己找一下 我呢就用结构体数组简单的实现了一下 nbsp nbsp nbsp 话不多说来看看代码 nbsp include lt stdio h gt include lt stdlib h gt include lt io

    2026年3月18日
    1
  • 记录自建ALIDDNS服务域名解析和外网访问

    记录自建ALIDDNS服务域名解析和外网访问本文参考https://blog.csdn.net/y1534414425/article/details/90699532除上文外要补充的有AccessKeyID和AccessKeySecret可以使用子账号只需要添加一个AliyunECSReadOnlyAccess权限就可以了需要路由器上虚拟机服务设计端口映射完事就可外网访问了…

    2022年5月2日
    77
  • pycharm切换conda虚拟环境

    pycharm切换conda虚拟环境1 进入 setting 选择解释器 gt showAll2 点击右边的 号 3 选择 Existingenvi gt 点击省略号 4 选择 conda 环境目录 在 annaconda 安装目录的 envs 下面 进入环境文件夹后选择 python 即可 5 选择好后 一路点击 ok 直到 setting 界面 选择好刚载入的环境解释器 确认即可

    2026年3月27日
    2
  • python解析json文件

    python解析json文件认识json数据json有两种数据结构:对象和数组。对象:用大括号表示,由键值对组成,每个键值对用逗号隔开。其中key必须为字符串且是双引号,value可以是多种数据类型。数组:用中括号表示,每个元素之间用逗号隔开。json中的字符串都要用双括号表示。json数据可以嵌套表示出结构更加复杂的数据。json格式与python格式的对应Python JSONd…

    2026年4月13日
    4
  • ifndef 详解

    ifndef 详解原博文 https www cnblogs com codingmengme p 7221295 html ifndef 是 ifnotdefined 的简写 是预处理功能 宏定义 文件包含 条件编译 当中的条件编译 可以根据是否已经定义了一个变量来进行分支选择 其作用是 1 防止头文件的重复包含和编译 2 便于程序的调试和移植 下面分别举例描述 一 防止头文件的重复包含和编译下面是错误示范 headfile 1 h include

    2026年3月19日
    2
  • 边车模式

    边车模式边车模式边车 就是在原来二轮摩托车旁边增加一个座位成了三轮摩托车 增加的一部分称为边车边车模式 对现有的服务增加额外的功能 这些功能并不影响业务逻辑 例如增加日志 限流 熔断 服务的注册和服务发现有专门服务来实现 像程序中的控制和业务逻辑分离 Controller 和 Service 层分离 这样大大降低了服务之间的耦合度并提升了扩展性和降低业务的复杂性这也符合单一职责原则 服务就是负载实现好自己的业务逻辑 一些其他的控制功能就交给其他组件来实现

    2026年3月16日
    2

发表回复

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

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