.bss数据不适合分配的RAM大小

时间:2018-12-17 05:52:59

标签: c elf

在编译应用程序的链接期间,我面临以下问题。

BuildTest/Main.elf section `.bss' will not fit in region `SDRAM_DATA'
../../../../arm-none-eabi/bin/ld.exe: region `SDRAM_DATA' overflowed by 2356 bytes

实际上,在我与其他代码合并之前,应用程序已成功编译。

因此,我最初尝试通过比较旧文件和新文件来查找是否有新添加的巨大全局或静态缓冲区,但是我没有发现任何有用的东西。合并的文件也很多(合并花费了15天的时间),因此现在很难检查每个文件。

那么有什么办法可以让我在.bss节中添加新的全局\静态缓冲区列表的信息?

注意:SDRAM_DATA是在链接脚本中定义的内存区域。

1 个答案:

答案 0 :(得分:0)

在链接器命令行中添加链接器映射生成选项。

运行链接器后,从映射文件中过滤掉所有进入.bss的内容。如果您在合并之前对构建进行相同的操作,则两个列表的差异应表明代码的哪一部分增加了.bss大小。

例如对于binutils ld,该选项为-Map <name of map file>或(如果使用gcc包装器):-Wl,-Map,<name of map file>