ios 开发

符号

2022-12-18  本文已影响0人  iOS小洁

符号

1、符号表种类:

2、符号区分:

3、导⼊(Import)导出(Export)符号:

4、two_levelnamespace & flat_namespace:

⼆级命名空间与⼀级命名空间。链接器默认采⽤⼆级命名空间,也就是除了会记录符号 名称,还会记录符号属于哪个动态库的,⽐如会记录下来_NSLog来⾃Foundation。

5、Weak Symbol:

6、Common Symbol:

在定义时,未初始化的全局符号。

链接器设置:

strip命令

strip用来移除或修改符号表中的符号

间接符号不能删除

strip动态库的时候,不能strip全局符号

Strip Style:在Xcode build setting中配置

Strip Debugging Symbols流程:

  1. 将Mach-O 解析成模型Object
  2. 遍历LoadCommands
  3. 找到Segname==__DWARF的LoadCommand
  4. 移除Section
  5. 从符号表中移除Symbol
  6. 将修改后的模型Object重新写入Mach-O

Strip All Symbols 流程

  1. Strip Debugging Symbols
  2. markSymbols
  3. 除了间接符号表中引用的符号全部删除

Strip Non-Global Symbols流程:

  1. Strip Debugging Symbols
  2. 遍历符号表
  3. 删除n_tyoe != N_EXT的符号. (n_tyoe != N_EXT, 为外部符号)

strip命令参数:

  1. -x: non_global
  2. 无参数: 代表全部符号
  3. -S: 调试符号
上一篇下一篇

猜你喜欢

热点阅读