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

这篇具有很好参考价值的文章主要介绍了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、符号名称。

例如:
iOS开发之查看静态库(.a/.framework)中包含的.o文件和函数符号(ar,nm命令),iOS开发等常用知识点,静态库,framework,.a,.o,函数符号
符号的类型是以一个字母的形式显示的,小写字母表示这个符号是本地(local)的,而大写字母则表示这个符号是全局的(global,externel)。一般来说,类型有以下几种:T、D、B、U、W。

各自的含义如下:

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

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

B表示初始化的数据段;

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

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

整理不易,转载请注明,谢谢~文章来源地址https://www.toymoban.com/news/detail-676581.html

到了这里,关于iOS开发之查看静态库(.a/.framework)中包含的.o文件和函数符号(ar,nm命令)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决element-ui表单禁用状态时,其表单中包含的组件或其他元素不被禁用

    解决element-ui表单禁用状态时,其表单中包含的组件或其他元素不被禁用 (1)例子 (2)zujian.vue(要使自定义组件其外层表单的影响。可以在组件内部加上新的el-form解决)

    2024年02月13日
    浏览(52)
  • 记录解决“无法将“C:......conda.exe”项识别为 cmdlet、函数、脚本文件或可运行程序的名称”以及“表达式或语句中包含意外的标记”的系列问题(VSCode开发环境)

      今天安装完VSCode,调试代码时发现终端提示以下报错信息,网上查了相关帖子,并依照参考1的方式进行了以下调试:    参考其它博客(参考2)说是环境变量没有添加,但是我试了之后发现不是这个问题。 原因其实就是找不到途中说的conda.exe文件,所以需要进入上图红字

    2024年01月24日
    浏览(43)
  • python yaml库:safe_load()(安全解析函数,解析yaml)(防止yaml文件中包含恶意代码)

    YAML (YAML Ain’t Markup Language) 是一种人类可读的数据序列化标准。它被广泛用于配置文件、多语言环境、交互式应用等场合。Python 为 YAML 提供了强大的支持,其中包括一个安全的加载函数 safe_load 。 safe_load 是 PyYAML 库中的一个函数,用于安全地解析 YAML 文档。它的主要优点是可

    2024年02月08日
    浏览(32)
  • R和Rstudio中包的安装、加载和查看等操作

    前言 R语言中,R包的安装和加载等操作是使用R包进行数据分析和绘图的基础,尤其是对于R语言初学者具有重要的意义。下面主要介绍一些R包的常用操作命令。 补充:修改安装R包的位置 将R软件安装目录下etc文件夹中的Rprofile.site文件进行修改,使用Notepad打开该文件,在文档

    2024年02月13日
    浏览(28)
  • iOS开发之编译OpenSSL静态库

    项目审查发现OpenSSL1.0.2d有漏洞,所以需要升级更新OpenSSL版本,借此机会,记录一下编译OpenSSL静态库的流程。 Xcode使用的是14.2,OpenSSL使用的是1.0.2u、1.1.1u,由于是对两个不同版本进行的编译操作,所以相关命令和操作方式是有区别的,我会在下面分别描写,操作时要看清对

    2024年02月07日
    浏览(46)
  • 【Linux】基础IO——文件系统|软硬链接|动静态库

    基于上篇博客所写到的文件各种操作都是基于被打开文件所进行操作的,那么如果一个文件没有被打开它存在哪里呢?这个答案毫无疑问肯定是存在于磁盘上的。那么,对于一个没有打开的文件(也就是磁盘文件)我们应该如何理解呢? 这里我们所要讲的磁盘是机械硬盘、即

    2024年02月04日
    浏览(46)
  • 系统文件IO、文件描述符fd、重定向、文件系统、动态库和静态库

    C文件接口 C文件接口都是封装了系统的文件接口,学习系统的文件接口有利于更熟悉文件的操作。 open函数 头文件 #include sys/types.h #include sys/stat.h #include fcntl.h 函数描述 int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode); 参数 pathname: 要打开或创建的目

    2024年02月07日
    浏览(41)
  • Linux文件(系统)IO(含动静态库的链接操作)

    fopen打开文件,fclose关闭文件 fwrite操作(写文件) fwrite函数从 ptr 里将 nitems 个大小为 size 字节的数据写进定 stream 里 hello_w.c 文件 这里我们将会在此路径得到一个写有 5 行 hello fopen 的 myfile.txt 文件,如下gif: fread操作(写文件) fread 不会在字符串末尾添加 null 终止符( \\0

    2024年04月14日
    浏览(46)
  • C++中包含初始化列表的构造函数

    构造函数对初始化成员变化很有用。另一种初始化成员的方式是使用初始化列表。对于程序中接受两个参数的构造函数,其包含初始化列表的变种类似于下面这样: 格式为: :成员变量1(参数1),成员变量2(参数2) 编译器会将初始化列表一一转换成代码,并将这些代码放

    2024年02月05日
    浏览(53)
  • iOS开发Swift-7-得分,问题序号,约束对象,提示框,类方法与静态方法-趣味问答App

    1.根据用户回答计算得分  ViewController.swift: 2.显示题目序号  ViewController.swift: 3.为屏幕进度条更改约束 将1:13的宽度约束拖入ViewController。  因为progressBarView是只读,所以要根据屏幕宽度计算出1/13的宽度,然后加到Constant中。  ViewController.swift:  4.制作弹窗 https://github.com/rel

    2024年02月10日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包