http://gcc.gnu.org/ml/gcc-help/2009-09/msg00134.html
从下午3:30开始搞,后来找Yaowen,看看,换个思路。第二天回到位置上又开始了,想的是怎么解决,不再像曾经那样,这个有解吗?看来现在的我开始相信是问题就有解决办法了。
回到正题, 主要问题还是字节对齐问题,Cary给我的建议是 int* ,long *之类的强制类型转换要注意一个个的转,我的函数中没有这个,但是又char *的强制类型转换。
搞了半天,又担心时间耗得太久,于是乎,重写这个函数,以前可以执行的就搞过来,其中我做的字符操作注释掉,ok,排除问题,慢慢的找到问题的关键如下:
parse_param_srv(char *srv, IMClientConfig & config)
{
std::string s_srv(srv); //这样编出来的程序在x86上运行时没有问题的,但是到arm上就会出现Alignment trap问题。
}
改为如下就没有问题了。
std::string srv=config.srv;
parse_param_srv(std::string &srv, IMClientConfig & config)
{
}
Alignment trap: im_client (8161) PC=0x400fd990 Instr=0xe5904010 Address=0x000001ab FSR 0x001
Bus error