【iOS】编译二进制文件说明

编译二进制文件说明

      • 如何生成
      • 文件路径
      • 文件说明
        • 第一部分:.o文件
        • 第二部分:link
        • 第三部分:Segment
        • 第四部分:Symbol

如何生成

使用Xcode进行编译 ,会生成二进制相关文件,可以更详细看产物的布局

项目Target -> Build Setting -> Linking Genera -> Write Link Map = YES
请添加图片描述

文件路径

执行上述操作后,Command+B后,会生成二进制的产物,(我的项目名为TYPlayground),其大致路径为(如下图):
/Users/xxx/Library/Developer/Xcode/DerivedData/TYPalyground-doefpfbhcehqtqexpxoqzqpabkvm/Build/Intermediates.noindex/TYPalyground.build/Debug-iphonesimulator/TYPalyground.build/
请添加图片描述

文件说明

TYPalyground-LinkMap-normal-x86_64.txt 显示了link的详细信息

第一部分:.o文件

展示编译后的.o文件,(下图中的3-10行)

第二部分:link

展示需要链接的Framework,(下图中的11-17行)
请添加图片描述

第三部分:Segment

Sections 区域
这个区域提供了各个段(Segment)和节(Section)在可执行文件中的位置和大小。这个区域完整的描述可执行文件中的全部内容。

Address + Size + 1 = 下一个section的起始地址

其中,段分为两种

  • __TEXT 代码段
  • __DATA 数据段
# Sections:
# Address	Size    	Segment	Section
0x100001330	0x00001A7A	__TEXT	__text          // 代码
0x100002DAA	0x00000084	__TEXT	__stubs
0x100002E30	0x00000028	__TEXT	__const
0x100002E58	0x00001216	__TEXT	__objc_methname     // OC 方法
0x10000406E	0x000000D8	__TEXT	__cstring           // 字符串
0x100004146	0x000000D4	__TEXT	__objc_classname    // OC 类名
0x10000421A	0x00000B88	__TEXT	__objc_methtype     // OC 方法类型
0x100004DA4	0x0000008C	__TEXT	__gcc_except_tab
0x100004E30	0x00000111	__TEXT	__entitlements
0x100004F41	0x00000042	__TEXT	__ents_der
0x100004F84	0x00000070	__TEXT	__unwind_info
0x100005000	0x000000D0	__DATA_CONST	__got
0x1000050D0	0x00000040	__DATA_CONST	__const           // 常量
0x100005110	0x000000C0	__DATA_CONST	__cfstring
0x1000051D0	0x00000038	__DATA_CONST	__objc_classlist  // OC 方法列表
0x100005208	0x00000010	__DATA_CONST	__objc_nlclslist  
0x100005218	0x00000028	__DATA_CONST	__objc_protolist  // OC 协议列表
0x100005240	0x00000008	__DATA_CONST	__objc_imageinfo  
0x100005248	0x00000068	__DATA_CONST	__objc_classrefs
0x100006000	0x000016D8	__DATA	__objc_const              // OC 常量
0x1000076D8	0x00000180	__DATA	__objc_selrefs
0x100007858	0x00000008	__DATA	__objc_protorefs
0x100007860	0x00000018	__DATA	__objc_superrefs          // OC 父类引用
0x100007878	0x00000020	__DATA	__objc_ivar               // OC iar
0x100007898	0x00000230	__DATA	__objc_data
0x100007AC8	0x000001E0	__DATA	__data
0x100007CA8	0x00000010	__DATA	__bss
第四部分:Symbol

上一部分是对Segment进行了一级划分,分出了Section
这一部分是对Section进一步划分,分出Symbol。

可以看到 +[TestViewController load]的起始地址和上面__TEXT __text // 代码的地址是一致的,以此类推,可以获取上面各个节的信息。

# Symbols:
# Address	Size    	File  Name
0x100001330	0x00000060	[  3] +[TestViewController load]
0x100001390	0x00000090	[  3] -[TestViewController init]
0x100001420	0x000001C0	[  3] -[TestViewController viewDidLoad]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/28118.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android中的消息异步处理机制及实现方案

基本介绍 当我们需要执行复杂的计算逻辑,网络请求等耗时操作时,服务器可能不会立即响应请求,如果不将这类操作放在子线程中运行,就会导致主线程被阻塞住,从而影响用户的使用体验如果想要更新应用程序中的UI控件&#…

ASM字节码操纵框架实现AOP

前言 使用ASM改写字节码实现Aop,是最快的Aop实现方式。 我猜你肯定懂AOP 凡是学习Spring框架,必然会深入了解AOP的原理以及实现。这里做下简单总结 Spring默认采取的是动态代理机制实现AOP,当动态代理不可用时(代理类无接口&a…

Mac M3 Pro安装Hadoop-3.3.6

1、下载Hadoop安装包 可以到官方网站下载,也可以使用网盘下载 官网下载地址:Hadoop官网下载地址 网盘地址:https://pan.baidu.com/s/1p4BXq2mvby2B76lmpiEjnA?pwdr62r提取码: r62r 2、解压并添加环境变量 # 将安装包移动到指定目录 mv …

FPGA - 数 - 加减乘除

一,数的表示 首先,将二进制做如下解释: 2的0次方1 2的1次方2 2的2次方4 2的3次方8 ..... 以此类推,那么任何整数,或者说任意一个自然数均可以采用这种方式来表示。 例如,序列10101001,根据上述…

Unity贪吃蛇改编【详细版】

Big and small greedy snakes 游戏概述 游戏亮点 通过对称的美感,设置两条贪吃蛇吧,其中一条加倍成长以及加倍减少,另一条正常成长以及减少,最终实现两条蛇对整个界面的霸占效果。 过程中不断记录两条蛇的得分情况&#xff0c…

【Unity】RPG2D龙城纷争(二)关卡、地块

更新日期:2024年6月12日。 项目源码:后续章节发布 索引 简介地块(Block)一、定义地块类二、地块类型三、地块渲染四、地块索引 关卡(Level)一、定义关卡类二、关卡基础属性三、地块集合四、关卡初始化五、关…

VCG显示——汉字,数字,图像

详细的介绍资料: 【从零开始走进FPGA】 玩转VGA http://www.cnblogs.com/spartan/archive/2011/08/16/2140546.html 【FPGA实验】基于DE2-115平台的VGA显示_vga接口实验 de2-115-CSDN博客 【FPGA】VGA显示文字、彩条、图片——基于DE2-115-CSDN博客 一.VCG原理 1.1…

时序预测 | MATLAB实现TCN-Transformer时间序列预测

时序预测 | MATLAB实现TCN-Transformer时间序列预测 目录 时序预测 | MATLAB实现TCN-Transformer时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.MATLAB实现TCN-Transformer时间序列预测; 2.运行环境为Matlab2023b及以上; 3.data为数…

Python **运算符(python**kwargs:参数解包)(kwargs:keyword arguments)

文章目录 Python中的 ** 运算符:参数解包参数解包基础语法和示例 在函数定义中使用 **示例代码 使用场景和好处1. 灵活性:使用 **kwargs 允许函数设计得更加灵活,可以接受未来可能增加的新参数而无需修改函数定义。2. 可读性和可维护性&#…

Kali中安装和使用docker的学习笔记

一、常见命令 ctrl 、shift、 : 窗口变大; ctrl 、- :窗口变小; ctrl L: 清屏 ; sudo su : 切换root 用户; ip addr / ifconfig: 获取IP地址; systemctl start ssh…

B端颜值无所谓?麻痹自己可以,麻痹业务人员和客户试一试。

很多老铁觉得B端系统颜值和体验无所谓,功能好就行了,我不认同这种说法,我觉得优秀的B端系统应该是内外兼修的,而不是偏科的。你想一想你费尽研发的系统,就是因为颜值问题,你的业务人员没信息推销&#xff0…

北方工业大学24计算机考研情况,学硕专硕都是国家线复试!

北方工业大学(North China University of Technology,NCUT),简称“北方工大”,位于北京市,为一所以工为主、文理兼融,具有学士、硕士、博士培养层次的多科性高等学府,是中华人民共和…

GitLab教程(四):分支(branch)和合并(merge)

文章目录 1.分支(branch)(1)分支的概念(2)branch命令 2.合并(merge)(1)三个命令pullfetchmergegit fetchgit mergegit pull (2)合并冲…

【计算机网络仿真实验-实验2.6】带交换机的RIP路由协议

实验2.6 带交换机的rip路由协议 1. 实验拓扑图 2. 实验前查看是否能ping通 不能 3. 三层交换机配置 switch# configure terminal switch(config)# hostname s5750 !将交换机更名为S5750 S5750# configure terminal S5750(config)#vlan 10 S5750(config-vlan)#exit S57…

PyTorch 维度变换-Tensor基本操作

以如下 tensor a 为例,展示常用的维度变换操作 >>> a torch.rand(4,3,28,28) >>> a.shape torch.Size([4, 3, 28, 28])view / reshape 两者功能完全相同: a.view(shape) >>> a.view(4,3,28*28) ## a.view(4,3,28,28) 可恢复squeeze…

【LLM】吴恩达『微调大模型』课程完全笔记

Finetuning Large Language Models 版权说明: 『Finetuning Large Language Models』是DeepLearning.AI出品的免费课程,版权属于DeepLearning.AI(https://www.deeplearning.ai/)。 本文是对该课程内容的翻译整理,只作为教育用途,不…

数据分析必备:一步步教你如何用matplotlib做数据可视化(2)

1、Matplotlib Anaconda Anaconda是Python和R编程语言的免费开源发行版,用于大规模数据处理,预测分析和科学计算。 该分发使包管理和部署变得简单容易。 Matplotlib和许多其他有用的(数据)科学工具构成了分发的一部分。 包版本由包管理系统Conda管理。 …

旅游网站(携程旅行网页学习 vue3+element)

旅游网站 1. 创建项目 在你要创建项目的路径下打开vscode,新建终端,然后输入vue ui,进入Vue项目管理器。选择“创建”,确定项目路径,并点击“在此创建新项目”。在项目文件夹中输入项目名称,点击下一步;选…

CMU最新论文:机器人智慧流畅的躲避障碍物论文详细讲解

CMU华人博士生Tairan He最新论文:Agile But Safe: Learning Collision-Free High-Speed Legged Locomotion 代码开源:Code: https://github.com/LeCAR-Lab/ABS B站实际效果展示视频地址:bilibili效果地址 我会详细解读论文的内容,让我们开始吧…

Python读取wps中的DISPIMG图片格式

需求: 读出excel的图片内容,这放在微软三件套是很容易的,但是由于wps的固有格式,会出现奇怪的问题,只能读出:类似于 DISPIMG(“ID_2B83F9717AE1XXXX920xxxx644C80DB1”,1) 【该DISPIMG函数只有wps才拥有】 …