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

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命令扫描静态库就可以找到重复的全局变量是在哪个类中定义的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,627评论 18 399
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,873评论 0 9
  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 12,390评论 0 27
  • 当我去世界各地时,我可以骄因傲的告诉他们,我是中国人,因为我们的祖国有上下五千年的历史。深厚的文化底蕴,代代...
    8海洋星8阅读 2,338评论 0 3
  • 从名字就可以了解,大鱼是男主人公鲲,海棠是女主人公椿。在我看来,椿代表着神灵,鲲代表着人。 神到人间走了一趟,人神...
    UN欢乐鱼阅读 3,114评论 0 0

友情链接更多精彩内容