在汇编时手臂丢失了千字节

时间:2014-06-30 08:16:36

标签: c makefile embedded arm contiki

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

想法?

3 个答案:

答案 0 :(得分:1)

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

  • 不同的编译器版本
  • 不同的目标处理器
  • 不同的编译器选项(尤其是优化和调试选项)。
  • 链接了不同的库代码(标准库或第三方)。
  • 不同的构建配置(例如,通过命令行宏定义)。

答案 1 :(得分:0)

对于每个编译器\链接器,您始终可以通过以下部分找到地图:

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

逐一比较这些部分以适应建筑环境,以缩小调查范围。

答案 2 :(得分:0)

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

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

P.S。更重要的是,请确保您具有相同的配置。例如,如果您的分包商执行了#34;发布"构建,你应该与你自己的"发布"也是如此。