【发布时间】:2010-09-17 01:11:37
【问题描述】:
我正在生成一个 hex 文件以在我希望保持在 32K 以下的 ARM 处理器上运行。它目前比这大得多,我想知道是否有人可以就什么是瘦身的最佳方法提供一些建议?
这是我到目前为止所做的
- 所以我在它上面运行了'size'来确定十六进制文件有多大。
- 然后再次“调整大小”以查看每个目标文件有多大,该链接用于创建十六进制文件。似乎大部分大小来自外部库。
- 然后我使用“readelf”查看哪些函数占用的内存最多。
- 我搜索了代码,看看是否可以消除对这些函数的调用。
这就是我卡住的地方,有些函数我不直接调用(例如_vfprintf),我找不到调用它的函数,所以我可以删除调用(因为我认为我不需要它)。
那么接下来的步骤是什么?
对答案的回应:
- 正如我所见,调用的函数会占用大量内存。但是我找不到它的名字。
- 我想省略这些函数(如果可能的话),但我找不到调用它们的原因!我猜可以从任意数量的库函数中调用。
- 链接器工作正常,我想,它只包括相关的库文件。你怎么知道是否只包含相关功能?你可以为此设置一个标志或其他东西吗?
- 我正在使用 GCC
【问题讨论】:
-
也许你已经知道这个了,也许对你有帮助:muppetlabs.com/~breadbox/software/tiny/teensy.html