0

首先,我不是嵌入式工程师,但我用 C 语言开发了几年。我的问题:当我在笔记本电脑上从我们的一个嵌入式软件(基于 contiki)编译源代码时,我得到的文件大小(222Kb 236Kb)与我们交付的分包商(我无法联系)不同。我不知道为什么我有这种差异。我想研究轨道。- 我有很好的库 - 我使用相同的 ARM EABI 编译器 - 我使用相同的 makefile 我安装了与我们的分包商相同的编译器 ARM EABI,所以我认为(可能是错误的)我的输出已准备好嵌入。我错了?

想法?

4

3 回答 3

1

这可能归结为许多事情,例如:

  • 不同的编译器版本
  • 不同的目标处理器
  • 不同的编译器选项(尤其是优化和调试选项)。
  • 链接不同的库代码(标准库或第三方)。
  • 不同的构建配置(例如通过命令行宏定义)。
于 2014-06-30T11:44:54.570 回答
0

也许您应该要求您的分包商提供地图文件并将地图文件与您身边的地图文件进行比较。

-Wl,-Map=the_map.map如果您使用 GCC,请添加到 LFLAGS。

PS 此外,请确保您具有相同的配置。例如,如果您的分包商进行了“发布”构建,您也应该与您自己的“发布”构建进行比较。

于 2014-07-03T03:58:34.463 回答
0

对于每个编译器\链接器,您总是可以按如下部分找到映射:

 text       data        bss        dec        hex    filename 
 0x1408     0x18      0x81c       7228       1c3c    size.elf

对两种建筑环境一一比较这些部分,以缩小调查范围。

于 2014-06-30T12:18:01.957 回答