解释gcc地图文件

sth*_*tfo 9 gcc

我需要找到在Linux上使用C开发的库的代码大小.我已经使用gcc链接器选项针对使用此库的示例应用程序生成了映射文件.

地图文件非常详尽.如何从映射文件中找出库的代码大小?任何关于如何解释地图文件的文档的指针也将非常有用.

Uli*_*ter 8

您想要找出给定共享对象中机器指令的大小吗?你为什么需要地图文件?

这给出了.text部分的大小..text部分是存储可执行代码的地方:

$ objdump  -x /usr/bin/objdump | grep .text
 13 .text         0002c218  0000000000403320  0000000000403320  00003320  2**4

In this example, there are 2c218 bytes of executable text. In decimal this is about 180 KiB:

$ printf %d\\n 0x2c218
180760

Edit: This is how it looks like with a library:

$ objdump -x /usr/lib/libcairo.so | grep .text
 11 .text         00054c18  000000000000cc80  000000000000cc80  0000cc80  2**4
$ printf %d\\n 0x54c18
347160

  • 如果问题来自**销售人员,你当然也应该添加`.data`和`.bss`部分(初始化和单元化数据),这意味着大小只是.a的文件大小如果被剥离.玩傻,客户通常不关心.text部分,数据有所不同. (2认同)