我正在生成一個在ARM處理器上運行的十六進制文件,我希望該文件在32K以下。它目前比這個要大得多,我想知道是否有人會對減少它的最好方法有什麼建議?減少可執行文件大小的過程
這裏是我到目前爲止已經完成
- 所以我跑「大小」它來確定十六進制文件有多大。
- 然後'大小'再次看看有多大的每個目標文件是鏈接來創建十六進制文件。看起來大部分大小來自外部庫。
- 然後我用'readelf'來查看哪些函數佔用了最多的內存。
- 我通過代碼搜索,看看我是否可以調用這些函數。
這裏是我卡住的地方,有一些函數,我不直接調用(例如_vfprintf),我找不到調用它,所以我可以刪除調用(因爲我認爲我不需要它)。
那麼接下來的步驟是什麼?
感謝您的幫助。
應對答案:
- 正如我可以看到有函數被調用它佔用了大量的內存。我不能找到什麼叫它。
- 我想省略這些功能(如果可能的話),但我找不到什麼叫他們!我猜可以從任意數量的庫函數中調用。
- 鏈接器正在按照需要工作,我認爲它只包含相關的庫文件。你如何知道是否只包含相關功能?你能爲此設置一個旗幟嗎?
- 我使用GCC
也許你已經知道這一個,也許它是有幫助的:http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html – Matthias 2012-04-26 19:56:12