在Linux中测量库文件的大小

6
我正在开发一款使用Linux操作系统的设备软件。因此,我所使用的库(RAM / ROM)大小非常重要。
如何轻松计算我的软件所需的RAM / ROM?(包括我使用的库) 我认为对于有经验的Linux开发人员来说,这是一个非常简单的问题。

1
这实际上是一个很难的问题。如果你的程序使用动态内存分配malloc或者有非平凡的调用模式(特别是递归),理论上甚至无法预测堆栈需要多少RAM。有一些分析器可以在确定典型嵌入式程序的堆栈需求方面工作得相当好,但它们通常不便宜。 - Gilles 'SO- stop being evil'
1个回答

4

运行

size <object>

或者

size <archive>

或者

size <shared-object>

如果你在交叉编译,那么使用"target-size"(或者"arm-size",如果你正在使用arm-gcc)。

这将为您提供一个

text    data     bss     dec     hex filename
表格,其中文本为程序大小,bss为已初始化的全局变量,data为只读数据。

虽然这回答了你的问题,但当你使用ld作为链接器时,你可能需要使用特定的LdScript,在最终链接时手动将节放置到可用的内存中。


2
请注意,此工具仅显示静态内存。运行时内存使用量将更大。它的大小取决于程序及其对堆栈和堆的使用情况。 - Kevin Vermeer
还可以使用"ldd"命令来检查共享库。有了"ldd"和"size",我可以猜测包括库在内的ROM/RAM使用量。 - Wonil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接