mac下的nm命令详解

从Xcode8开始,苹果在mac上使用了nm工具的llvm-nm工具(llvm-nm工具用于列出llvm字节码文件中的符号名,归档文件中的目标文件和目标)。对于nm工具的大多数命令选项,它们都有相同的选项;但是-f,-s和-L是完全不同的。本文主要介绍了nm工具的各种常用选项的含义。

Nm主要用于显示符号文件中各种符号的名称列表。在某些情况下,如果一个文件使用strip函数,即-T断开符号,在这种情况下,当使用nm和dyld时,结果会有所不同。在这种情况下,需要dyldinfo来查看文件。

如果输入文件被打包,使用nm将列出每个文件的细节。输入文件可以是标准的libx.a(x.o)文件,它列出了。一个和。o文件。

默认情况下,每个符号名称的值出现在符号名称之前。当使用-m选项时,该值将后跟以下字母,代表每个符号的类型:U(未定义)、A(绝对)、T(T的符号(文本部分)、D(D的符号(数据部分)、B(B的符号(bss部分)、C(通用符号)、S(上述符号类型之外的符号)或I(。如果该符号出现在本文档中(非外部引入),则类型为小写。

如果一个符号是Objective-C方法名,那么这个符号名将是这样的+-[class _ name(category_name)method:name:],其中+号代表一个类方法,-号代表一个示例方法(category _ name)代表一个类别。

默认情况下,符号按字母顺序输出。