免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5607 | 回复: 5
打印 上一主题 下一主题

请教高手 arm-elf-gcc 2.95.3版本的结构体紧凑编译的问题。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-13 13:12 |只看该作者 |倒序浏览
请教高手,代码如下:
{
  typedef struct  testnopack{
   char c[2];
  }testnopack;
  typedef struct  testwithpack{
   char c[2] __attribute__ ((packed));
  }testwithpack __attribute__ ((packed));
  printk("weiwei debug test testnopack = %d. testwithpack=%d\n", sizeof(testnopack), sizeof(testwithpack));
}
当我用arm-elf-gcc 编译的时候 打印的得到的结果都是  4, 当我加上 -fpack-struct 编译标志的时候,打印的得到的结果都变成了  2,
对结构
  typedef struct  testnopack{
   char c[2];
  }testnopack;
我是不希望编译器对它进行紧凑编译的,希望它在编译的时候能够自动补齐,长度能为4。
请教高手,我该如何做啊,先跪谢了
我的交叉编译器的版本是
[email=windy@linux:~/8620L/ag621/ag621pci]windy@linux:~/8620L/ag621/ag621pci[/email]> arm-elf-gcc -v
Reading specs from /home/windy/8620L/armutils_2.5.113.0/toolchain/lib/gcc-lib/arm-elf/2.95.3/specs
gcc version 2.95.3 20010315 (release)

论坛徽章:
0
2 [报告]
发表于 2007-03-13 13:56 |只看该作者
typedef struct  testwithpack{
   char c[2];
  }testwithpack __attribute__ ((packed));
_______________________

这样呢?

论坛徽章:
0
3 [报告]
发表于 2007-03-13 14:29 |只看该作者
原帖由 albcamus 于 2007-3-13 13:56 发表于 2楼  
typedef struct  testwithpack{
   char c;
  }testwithpack __attribute__ ((packed));
_______________________

这样呢?

帅哥, 这种情况我也试过了,我现在遇到的问题可能是我用 2.95.3版本 arm-elf-gcc  编译器 对 __attribute__ ((packed)) 不起作用 了, 代码在另外的一个平台上 用 xscale_be-gcc  编译可以达到想要的效果(结构体想紧凑的就紧凑,想让它自动补齐就自动补齐)
weiwei@localhost.localdomaindevel(PerphectAP).../AG3120> /opt/hardhat/devkit/arm/xscale_be/bin/xscale_be-gcc -v
Reading specs from /opt/hardhat/devkit/arm/xscale_be/lib/gcc-lib/armv5teb-hardhat-linux/3.2.1/specs

现在要把它 移植到uclinux嵌入式系统上,这个交叉编译系统用的是 2.95.3 arm-elf-gcc 编译器。

请大哥们救命啊。

论坛徽章:
0
4 [报告]
发表于 2007-03-13 15:26 |只看该作者
高手们 , 出来解答一下好吗?这个问题已经困扰小弟好久了,
先跪谢了。

论坛徽章:
0
5 [报告]
发表于 2007-04-01 12:28 |只看该作者
这样试一下:

typedef struct  testwithpack{
   char c;
}__attribute__ ((packed)) testwithpack;

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
6 [报告]
发表于 2007-04-01 14:10 |只看该作者
如果没办法的话,既然是“移植”,改变一些代码还是有点必要的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP