全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Illegal instruction的解决方法最新解决方法:把/usr/local/arm/compiler/arm-none-linux-gnueabi/libc/armv4t/lib目录(也就是你的编译器的库目录)下的所有文件拷贝到目标板子的根目录的lib目录下就好了。这样无论你的hello是动态编译还是静态编译,跑起来都不会有Illegal instruction的问题。/老的解决方法:开发板配置: ARM9 + linux-3.6.30编译器:arm-linux-4.3.2在移植好jffs2文件系统以后,当然想写个hello world来验证一下自己的成果了。好,开始:1.编辑编译#vi hello.c#include int main(void)printf(welcome to my rootfs!/n);return 0;#arm-linux-gcc o hello hello.c2.把hello复制到用来制作文件系统的文件夹,制作文件系统rootfs.jffs2,下载运行,开发板能够成功启动,能够出现shell交互界面。这点肯定地说明busybox是没有问题的。运行hello./hello出现:Illegal instruction从网上找了很多资料,大部分把责任归于EABI,但我想想,既然kernel和busybox都能正常启动,那它们都应该是eabi编译的了,hello也肯定是eabi的,因为他们都是用arm-linux-4.3.2编译的(编译内核的时候make menuconfig要选山EABI选项).所以网上大部分资料都不适合解决我遇到的问题。但最终还是找到了一边能够帮我解决问题的文章:sysV是UNIX的两大分支之一,现在的UNIX和类UNIX系统根据其发展分支可以分为sysV分支和BSD分支,这两个分支是最初的UNIX分化出来的最初的AT&T实验室的UNIX系统到了第5版,也是就system V (sysV) 后就分化成了BSD分支和sysV分支, 两者的最大区别就是启动过程的运行等级机制有很大区别. linux是sysV风格的UNIX系统,freeBSD是BSD风格的UNIX系统, 但是现在这个界限也在慢慢模糊掉, 两种分支的系统取长补短,相互渗透.还有一种可能性:maemo下自带的编译器支持新的嵌入式应用程序二进制接口标准EABI,而kernel,首先并未打开对eabi的支持,其次,kernel编绎使用的是非EABI的编译器。(实验失败,无法证明是内核问题还是编译器问题,总之和EABI脱不了关系)又找到一种可能性:来源:/pipermail/buildroot/2007-February/001516.html可能是有busybox引起的 昨天在牛人的帮助下,终于解决了Illegal instruction的问题(PS:重新编译下了交叉工具链)/caicry/blog/item/ede3b8fa01ebc89059ee908a.html虽然他还是把问题归咎于EABI,但是却给我指点了解决问题的方向。既然busybox(这里的busybox是指编译busybox-1.15.2生成的busybox二进制文件)能够成功运行,hello不能运行,那就看看他们的区别:#file buxyboxbusybox: ELF 32-bit LSB executable, ARM, version 1 (SYSV),staticallylinked, for GNU/Linux 2.6.14, stripped#file hello# file hellohello: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),dynamicallylinked (uses shared libs), for GNU/Linux 2.6.18, not stripped这时候恍然大悟了,hello在ram+linux系统上找不到运行所需的动态库,所以Illegal instruction。重新编译hello.c#gcc static o hello hello.c#file hellohello_static: ELF 32-bit LSB executable, ARM, version 1 (SYSV),staticallylinked, for GNU/Linux 2.6.14, not stripped重新制作jffs2文件系统,下载运行:#hello出现welcome to my rootfs!完!现在EABI已经开始在嵌入式中流行起来,确保软件的EABI匹配性,应该注意下面几点:1.编译kernel的时候要选上EABI。2.交叉编译的所有的软件都要用支持EABI的编译器(例如arm-linux-4.3.2)来编译。Illegal instruction错误解决办法2014-02-28 11:03:45分类:LINUX在tq2440上跑了一个程序,总是出现Illegal instruction错误,在网上找了很多个原因,有的说需要把编译器的库拷到板子上,但是最终还是不行,最后找到的原因是由于架构不同引起的无法识别指令的,需要在makefile 的CFLAGF上加上-march=armv4t,编译后放到板子里运行就OK了.Illegal instruction的解决?最近捣鼓maemo,发现其下编绎的文件,file一下,提示如下:busybox: ELF 32-bit LSB executable, ARM, version 1 (SYSV), for GNU/Linux 2.6.8, statically linked, stripped与普通的编绎下面的对比下:busybox: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.4.3, statically linked, for GNU/Linux 2.4.3, stripped试验了下,SYS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 如何评价华科某工科学院2025届本科毕设论文字数要求
- 内蒙古工业大学毕业设计格式规范(摘录)(精)
- 研究生学位论文写作格式规范
- 河北正高级会计师组卷模版
- 临床试验脱落率与申办方质量控制关系
- 临床试验药物风险评估与应对策略
- 临床路径虚拟仿真与医疗费用控制
- 临床试验远程监查中的电子报告系统(eRT)应用
- 《文献信息检索》习题答案 文献信息检索(答案)
- 广州大学普通全日制本科生毕业论文(设计)规范化要求
- 电梯安全使用及维保操作手册
- 2025年TPU行业市场前景分析
- 灭火和应急疏散预案范本
- 西语面试题目及答案
- 雨课堂学堂云在线《旅游学英语-中国篇(东北 )》单元测试考核答案
- 2025河北张家口康保县二人台艺术团招聘专业演职人员18人笔试考试备考题库及答案解析
- 高校专业建设自评报告范文
- 2025年新疆中职政治试卷及答案
- 屠宰工合同(标准版)
- 2025年巴彦淖尔市交通投资有限公司招聘考试笔试试卷【附解析】
- 考试(文化装备管理员)历年参考题库含答案详解(5套试卷)
评论
0/150
提交评论