我正在生成一个十六进制文件以在我希望保持在 32K 以下的 ARM 处理器上运行。它目前比这大得多,我想知道是否有人可能对瘦身的最佳方法有一些建议?
这是我到目前为止所做的
- 所以我在它上面运行了'size'来确定十六进制文件有多大。
- 然后再次“大小”以查看每个目标文件有多大,该链接用于创建十六进制文件。似乎大部分大小来自外部库。
- 然后我使用'readelf'来查看哪些函数占用的内存最多。
- 我搜索了代码,看看是否可以消除对这些函数的调用。
这就是我卡住的地方,有些函数我不直接调用(例如_vfprintf),我找不到调用它的函数,所以我可以删除调用(因为我认为我不需要它)。
那么接下来的步骤是什么?
对答案的回应:
- 正如我所看到的,调用了一些占用大量内存的函数。但是我找不到它的名字。
- 我想省略那些函数(如果可能的话),但我找不到调用它们的东西!我猜可以从任意数量的库函数中调用。
- 链接器按需要工作,我认为,它只包含相关的库文件。你怎么知道是否只包含相关功能?你可以为此设置一个标志或其他东西吗?
- 我正在使用 GCC