本地x86可以, 放到arm上就不行的几种可避免的情况
2012-08-11 11:27
239 查看
1. 内存不够, 本地x86通常的内存远大于嵌入式arm里面的, 这个用top -m命令可以查
2. 变量未初始化, c/c++标准并没有规定变量会自动初始化为0, 而在x86的gcc里, 通常(没遇到过 不通常 )会默认0, 而在arm交叉编译后就没这么幸运了, 虽然99%的情况也是0,
可是仍然有1%的可能不是, 我估计这1%出现的原因也是嵌入式设备中的内存碎片,导致不能分配连续的0造成的. 所以写程序时对关键变量, 如指针, 可能变用作数组下标的变量都要初始化一下
3. 内存对齐, 话说这个是交叉编译器的bug, 在某些特定字节顺序下, 若以1对齐, arm端的程序会错, 例子见
http://topic.csdn.net/u/20120106/12/3a68d384-b3be-4441-87f1-6da82ee87084.html
2. 变量未初始化, c/c++标准并没有规定变量会自动初始化为0, 而在x86的gcc里, 通常(没遇到过 不通常 )会默认0, 而在arm交叉编译后就没这么幸运了, 虽然99%的情况也是0,
可是仍然有1%的可能不是, 我估计这1%出现的原因也是嵌入式设备中的内存碎片,导致不能分配连续的0造成的. 所以写程序时对关键变量, 如指针, 可能变用作数组下标的变量都要初始化一下
3. 内存对齐, 话说这个是交叉编译器的bug, 在某些特定字节顺序下, 若以1对齐, arm端的程序会错, 例子见
http://topic.csdn.net/u/20120106/12/3a68d384-b3be-4441-87f1-6da82ee87084.html
相关文章推荐
- 奇葩的Tomcat环境,localhost可以正常访问本地的Webservice,用自己机器Ip则不行
- ARM异常中断返回的几种情况
- 本地可以但远程不行
- bt5全称是Back Track five,是继BT3,BT4之后的最新版,这是一个linux环境的便携系统,可以放到U盘或者硬盘中启动,对本身硬盘没有影响,无需在本地安装。
- [Linux][问题解决]Linux访问本地网站可以,但是外部访问不行
- 将本地项目放到Github上(应该可以这么说)[如有错误欢迎大家批评指正]
- ARM异常中断返回的几种情况
- 本地环境代码正常,上传服务器则出现问题,几种可能情况分析
- ARM异常中断返回的几种情况
- ARM流水线与异常中断返回的几种情况
- ftp服务端本地测试用ftp://localhost或者127.0.0.1都可以测试成功,但是一旦用本机IP就不行
- js replace 全局替换 以表单的方式提交参数 判断是否为ie浏览器 将jquery.qqFace.js表情转换成微信的字符码 手机端省市区联动 新字体引用本地运行可以获得,放到服务器上报404 C#提取html中的汉字 MVC几种找不到资源的解决方式 使用Windows服务定时去执行一个方法的三种方式
- IOS开发笔记(1)手机断网的情况下可以从本地读取数据
- Centos学习笔记(一):javacv在本地可以跑,放到服务器提示"no jniopencv_core in java.library.path"
- 哪几种情况可以销毁session(一般有3种)
- 两层Makefile的书写方法,可以一次生成在X86和ARM运行的程序
- 本地环境可以,生产环境不行(持续补充)
- 本地可以服务器上不行的问题之https加载cdn资源
- 哪几种情况可以销毁session(一般有3种)
- 解决mysql本地登陆可以,远程登陆不行的问题