2014-06-30 59 views
0

對於初學者,我不是嵌入式工程師,但我在C開發了幾年。 我的問題是:當我在我的筆記本電腦上編譯我們的嵌入式軟件(基於contiki)之一的源代碼時,我獲得了不同於我們的分包商交付的文件大小(222Kb 236Kb)。我不知道爲什麼我有這種差異。 我想學習曲目。我使用相同的ARM EABI編譯器 - 我使用相同的生成文件 我已經安裝了與我們的分包商相同的編譯器ARM EABI,所以我認爲(也許是錯誤的),我的輸出已準備好嵌入。我錯了?編譯時丟失了千字節

想法?

+0

你正在比較哪些文件格式? –

+0

我比較.hex文件 – user3789470

回答

1

這可能是下降到了一些東西,如:

  • 不同的編譯器版本
  • 不同的目標處理器
  • 不同的編譯器選項(尤其是優化和調試選項)。
  • 鏈接的不同庫代碼(標準庫或第三方)。
  • 不同的構建配置(例如通過命令行宏定義)。
0

隨着每一個編譯器\連接你總是可以找到部分這樣的地圖:

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

比較這些部分逐一進行兩個建築環境,以縮小調查的主題。

0

也許你應該要求你的分包商提供地圖文件,並將地圖文件與你身邊的地圖文件進行比較。

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

P.S.更重要的是,確保你有相同的配置。例如,如果您的分包商執行了「發佈」構建,那麼您應該與自己的「發佈」構建進行比較。