美文网首页
iOS-用strings命令扫描静态库-解决duplicate

iOS-用strings命令扫描静态库-解决duplicate

作者: Billlin | 来源:发表于2017-12-27 18:40 被阅读0次

    strings命令

    strings命令在对象文件或二进制文件中查找可打印的字符串。字符串是4个或更多可打印字符的任意序列,以换行符或空字符结束。 strings命令对识别随机对象文件很有用。

    语法
    strings [ -a ] [ - ] [ -o ] [ -t Format ] [ -n Number ] [ -Number ] [ file ... ]
    
    选项
    -a --all:扫描整个文件而不是只扫描目标文件初始化和装载段
    -f –print-file-name:在显示字符串前先显示文件名
    -n –bytes=[number]:找到并且输出所有NUL终止符序列
    - :设置显示的最少的字符数,默认是4个字符
    -t --radix={o,d,x} :输出字符的位置,基于八进制,十进制或者十六进制
    -o :类似--radix=o
    -T --target= :指定二进制文件格式
    -e --encoding={s,S,b,l,B,L} :选择字符大小和排列顺序:s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit
    @ :读取中选项
    

    strings扫描静态库语法

    • strings命令扫描framework静态库
      strings XXSDK.framework/XXSDK
      
    • strings命令扫描.a静态库
      strings XXSDK.a
      

    strings扫描静态库结果

    • OBJC_CLASS:静态库中包含的类。
    • OBJC_IVAR:类的成员变量(属性/变量)。
    • OBJC_METACLASS:isa指针,指向该对象所属类型的类型对象(Class Object)。在Objective-C中,类也是用对象来表示的,而类的isa指针指向它的metaclass(存储静态成员变量和类方法)。
    • l_OBJC_LABEL_PROTOCOL_:遵从的协议。
    • l_OBJC_PROTOCOL_:遵从的协议。
    • _变量名:用extern修饰的全局变量或者用const修饰的变量。
    • _函数名:内联函数。
    • _枚举名:用NS_OPTIONS定义的枚举。
    • 方法名:方法。
    • .cxx_destruct:隐藏的.cxx_destruct方法。
    • 字符串:字符串。

    strings命令解决duplicate symbol问题

    在两个SDK的.m文件中定义了相同的全局变量,编译时会报duplicate symbol错误。这时候在项目中全局搜索重复的全局变量名是搜索不到任何结果的,也就没办法知道是哪里重复了。这时候strings命令就派上用场了,用strings命令扫描静态库就可以找到重复的全局变量是在哪个类中定义的。

    相关文章

      网友评论

          本文标题:iOS-用strings命令扫描静态库-解决duplicate

          本文链接:https://www.haomeiwen.com/subject/ktpugxtx.html