请教高手 arm-elf-gcc 2.95.3版本的结构体紧凑编译的问题。

发布于 2022-09-28 18:20:11 字数 1031 浏览 16 评论 0

请教高手,代码如下:
{
  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)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

空心空情空意 2022-10-05 18:20:11

typedef struct  testwithpack{
   char c[2];
  }testwithpack __attribute__ ((packed));
_______________________

这样呢?

戒ㄋ 2022-10-05 18:20:11

原帖由 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 编译器。

请大哥们救命啊。

古镇旧梦 2022-10-05 18:20:11

高手们 , 出来解答一下好吗?这个问题已经困扰小弟好久了,
先跪谢了。

柏拉图鍀咏恒 2022-10-05 18:20:11

这样试一下:

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

娇妻 2022-10-05 18:20:11

如果没办法的话,既然是“移植”,改变一些代码还是有点必要的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文