主题 : 求解Illegal instruction的原因 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 38955
精华: 0
发帖: 8
金钱: 40 两
威望: 8 点
综合积分: 16 分
注册时间: 2011-03-03
最后登录: 2011-03-11
楼主  发表于: 2011-03-03 14:53

 求解Illegal instruction的原因

#include "LinuxComm.h"
#include "LinuxSerialComm.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
using namespace std;


int main(int argc,char *argv[])
{
    int num=-1;
    if(argc>1)
        num=atoi(argv[1]);
    else
        num=3;
    printf("num=%d\n",num);
    
    CLinuxComm  *com=new CLinuxSerialComm(num,19200,8,'N',1);
    com->OpenComm();
  
    bool flag=true;
    char buf[255]={0};
    cout<<"******************************* help ***************************"<<endl;
    cout<<"***************************** r: recv **************************"<<endl;
    cout<<"***************************** w: send **************************"<<endl;
    cout<<"***************************** q: quit **************************"<<endl;
  
    while(flag)
。。。。。。。。


}
,我的板子是micro2440,交叉编译,上传到板子上运行,结果

./armcom
num=3
Illegal instruction

请高手帮我看下问题出在哪里?
级别: 侠客
UID: 38551
精华: 0
发帖: 74
金钱: 370 两
威望: 74 点
综合积分: 148 分
注册时间: 2011-02-26
最后登录: 2011-12-27
1楼  发表于: 2011-03-03 15:28
换一下交叉编译工具试一下呢!我用的有 4.2.3 和 4.5.1版本,这两个都行的!
还有就是,你重新编译一下交叉工具链!
级别: 新手上路
UID: 38955
精华: 0
发帖: 8
金钱: 40 两
威望: 8 点
综合积分: 16 分
注册时间: 2011-03-03
最后登录: 2011-03-11
2楼  发表于: 2011-03-03 15:33

 回 1楼(qq521) 的帖子

谢谢,楼上,哪里有你说的那两个版本?
^很多问题的背后都是简单的原因......
级别: 荣誉会员
UID: 34780
精华: 0
发帖: 1219
金钱: 6230 两
威望: 1246 点
综合积分: 2438 分
注册时间: 2010-12-21
最后登录: 2017-09-18
3楼  发表于: 2011-03-03 15:44
应该是编译器用错了,用与你的板配套的toolchain,印象中最新版本是4.4.3
级别: 新手上路
UID: 38955
精华: 0
发帖: 8
金钱: 40 两
威望: 8 点
综合积分: 16 分
注册时间: 2011-03-03
最后登录: 2011-03-11
4楼  发表于: 2011-03-03 16:20

 回 3楼(911gt3) 的帖子

谢谢!我试下.
级别: 新手上路
UID: 38955
精华: 0
发帖: 8
金钱: 40 两
威望: 8 点
综合积分: 16 分
注册时间: 2011-03-03
最后登录: 2011-03-11
5楼  发表于: 2011-03-03 17:56

 回 4楼(lshl) 的帖子

谢谢,问题解决了,用4.4.3版本的程序能运行.