iOS开发之查看静态库(.a/.framework)中包含的.o文件和函数符号(ar,nm命令)

.a/.framework其实是把编译生成的.o文件,打包成一个.a/.framework文件。a的意思是archive/归档的意思。

查看静态库.a文件包含的内容用下面的命令解压:

复制代码
 ar x xxx.a

用ar命令打包静态库:

复制代码
参数r是将后面的*.o或者*.a文件添加到目标文件中
参数c是创建
参数s是添加索引

ar -rcs 文件输出地址/xxx.a 文件索引地址1/*.o 文件索引地址2/*.o 等等

还可以将.a文件和.o文件一起打包:
ar -rcs 文件输出地址/xxx.a 文件索引地址1/*.o 文件索引地址2/*.o 等等 合并后的文件输出地址/xxxxx.a

查看.a文件的symbols(符号),用下面的命令:

复制代码
nm  xx.a

如果输出较多,可重定向输出至文本文件中
nm  xx.a  > xx.txt

会打印每个包含的文件,以及文件内的symbol
nm -g xxx.a

输出包含三个部分:

1、符号值。默认显示十六进制;

2、符号类型。小写表示是本地符号,大写表示全局符号(external);

3、符号名称。

例如:

符号的类型是以一个字母的形式显示的,小写字母表示这个符号是本地(local)的,而大写字母则表示这个符号是全局的(global,externel)。一般来说,类型有以下几种:T、D、B、U、W。

各自的含义如下:

T表示在代码段中定义的一般变量符号;

D表示时初始化过的数据段;

B表示初始化的数据段;

U表示没有定义的,在这个库里面使用了,但是在其他库中定义的符号;

W,weak的缩写,表示如果其他函数库中也有对这个符号的定义,则其他符号的定义可以覆盖这个定义;

整理不易,转载请注明,谢谢~

相关推荐
a3158238067 天前
Android14 源码开发Launcher界面优化,显示AllApp 抽屉, 底部虚拟按键(Home,Back,Menu)变深色
android·framework·android14
风舞雪凌月1 个月前
【教程】Android(AOSP)Framework开发/ROM定制快速教程
android·framework·开发·aosp·rom
奔跑吧 android1 个月前
【android bluetooth 框架分析 04】【bt-framework 层详解 5】【AbstractionLayer介绍】
android·framework·bluetooth·bt·gd·aosp13
千里马学框架2 个月前
想一想android桌面的未读计数角标应该如何设计呢?
android·framework·sdk·角标·桌面角标·未读计数角标·华为桌面
oh_my_god2 个月前
Android开机向导定制(1)开机向导加载流程
android·framework
千里马学框架2 个月前
学员投稿:华为,ov等手机主流大厂桌面未读计数角标更新接口汇总
android·华为·智能手机·framework·安卓framework开发·桌面·角标
田一一一2 个月前
Android framework 中间件开发(三)
android·中间件·framework·jni
田一一一2 个月前
Android framework 中间件开发(二)
android·中间件·framework
千里马学框架2 个月前
重学安卓14/15自由窗口freeform企业实战bug-学员作业
android·framework·bug·systrace·安卓framework开发·安卓窗口系统·自由窗口
帅得不敢出门3 个月前
Android Framework学习三:zygote剖析
android·java·学习·framework·安卓·zygote