iOS Link Map

527 阅读3分钟

Link Map

由Xcode build产生的Link Map文件能比较直观的反映出程序各部分的文件大小情况,对于减少包体积很有帮助

  • Link Map就是文本文件,主要是用于分析每个文件代码段的大小,常量,静态字符串等信息。

开启Link map

Build Setting->Write Link Map File设置为YES。在Path to Link Map File中设置Link map文件的路径,默认为:

  $(TARGET_TEMP_DIR)/$(PRODUCT_NAME)-LinkMap-$(CURRENT_VARIANT)-$(CURRENT_ARCH).txt

Objct files

最前面的步伐是Object files,展示了编译后的文件,格式为.o文件

  1. 8.72K AppDelegate.o
  2. 0.52K viewController.o
  3. 324.28k SDWebImage
  4. 326.00k libAFNetworking.a

前面是文件编号,引用的framework也一样会列出来。

Segment & section

接着是section表,是按照 mach-o 文件映射的Segment和section信息。

0x100006AE4 0x0005A5AC  __TEXT  __text
0x100061090 0x00000984  __TEXT  __stubs
0x100061A14 0x0000099C  __TEXT  __stub_helper
0x1000623B0 0x00001180  __TEXT  __const
0x100063530 0x00002B96  __TEXT  __objc_methname
0x1000660C6 0x000000D0  __TEXT  __objc_classname
0x100066196 0x00000CEC  __TEXT  __objc_methtype
0x100066E82 0x00013955  __TEXT  __cstring
0x10007A7D8 0x000010D2  __TEXT  __ustring
0x10007B8AC 0x000000A8  __TEXT  __gcc_except_tab
0x10007B954 0x000006A8  __TEXT  __unwind_info
0x10007C000 0x000003E0  __DATA  __got
0x10007C3E0 0x00000658  __DATA  __la_symbol_ptr
0x10007CA38 0x00000AE0  __DATA  __const
0x10007D518 0x00000E20  __DATA  __cfstring
0x10007E338 0x00000040  __DATA  __objc_classlist
0x10007E378 0x00000010  __DATA  __objc_nlclslist
0x10007E388 0x00000000  __DATA  __objc_catlist
0x10007E388 0x00000020  __DATA  __objc_protolist
0x10007E3A8 0x00000008  __DATA  __objc_imageinfo
0x10007E3B0 0x00003348  __DATA  __objc_const
0x1000816F8 0x00000940  __DATA  __objc_selrefs
0x100082038 0x00000008  __DATA  __objc_protorefs
0x100082040 0x00000178  __DATA  __objc_classrefs
0x1000821B8 0x00000018  __DATA  __objc_superrefs
0x1000821D0 0x00000064  __DATA  __objc_ivar
0x100082238 0x000002D0  __DATA  __objc_data
0x100082508 0x00001460  __DATA  __data
0x100083968 0x000026B0  __DATA  __bss
0x100086018 0x0000005C  __DATA  __common

其中__text是代码段,__data 是数据段,__cfstring表示C字符常量section,__objc_calsslist是全部OC类列表,__objc_classrefs是引用到的OC类列表;

参考

iOS Link Map

LinkMap查看工具

二进制瘦身工具Snake,直接读取Mach-O文件,解析出ObjC信息