如何在C中计算一个模块的文本、rodata、数据和bss大小?
How to calculate text, rodata, data and bss sizes of one module in C?
在我的项目中,我首先从文件夹 A
编译 aa_1.c
、aa_2.c
...,然后从 bb_1.c
bb_2.c
...文件夹 B
。然后我用gcc-ar
生成libapps.a
。最后,我 link 与其他静态库。
现在我想计算文件夹 A
的 text
、rodata
、data
和 bss
部分。
我的方法是执行gcc-nm -S --size-sort folder/*.o
,累积text
、rodata
、data
和bss
段。但是有些函数可能会被优化掉,因为它们从未被调用过。
那么如何计算 text
、data
、rodata
和 bss
尺寸?
我还有一个问题,使用gcc-nm -S --size-sort a.o
没有'b'
类型。但是使用 gcc-size a.o
显示 bss
部分是 8 个字节。那么哪一个是正确的?
根据 Get list of static libraries used in an executable,库名称在 linking 过程中被丢弃。
您可以将-Xlinker -Map=file.map
添加到link命令中,然后尝试从'file.map'中提取信息。
在我的项目中,我首先从文件夹 A
编译 aa_1.c
、aa_2.c
...,然后从 bb_1.c
bb_2.c
...文件夹 B
。然后我用gcc-ar
生成libapps.a
。最后,我 link 与其他静态库。
现在我想计算文件夹 A
的 text
、rodata
、data
和 bss
部分。
我的方法是执行gcc-nm -S --size-sort folder/*.o
,累积text
、rodata
、data
和bss
段。但是有些函数可能会被优化掉,因为它们从未被调用过。
那么如何计算 text
、data
、rodata
和 bss
尺寸?
我还有一个问题,使用gcc-nm -S --size-sort a.o
没有'b'
类型。但是使用 gcc-size a.o
显示 bss
部分是 8 个字节。那么哪一个是正确的?
根据 Get list of static libraries used in an executable,库名称在 linking 过程中被丢弃。
您可以将-Xlinker -Map=file.map
添加到link命令中,然后尝试从'file.map'中提取信息。