我正在使用 GNU 链接器脚本,其中 bss
部分变量获得非 4 字节对齐地址,这是一个大问题,因为硬件正在使用变量地址,需要字对齐地址.
与其使用其中一个的对齐属性,不如让我有 10 个变量,或者我想让链接器为特定部分中的每个变量生成字对齐地址,我该怎么做?
我试过使用 ALIGN()
但没有效果。
这是例子:
.bss.a 9cdf8 0x1
.bss.b 9cdf9 0x1
对于 .bss.b
,我想获取 0x9cdf8 + 4
等所有变量。
我怎样才能做到这一点?
最佳答案
您最好在定义的地方标记需要 4 字节对齐的变量。例如,在 gcc 中:
char a __attribute__((aligned(4)));
char b __attribute__((aligned(4)));
参见 http://gcc.gnu.org/onlinedocs/gcc-4.8.2/gcc/Variable-Attributes.html
关于c - ARM: GNU GCC LInker bss 部分对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19666181/