【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,一经查实,立即删除!

相关文章

Python烟雾液体弹性力微分模拟 | 出租车往返速度微分计算

🎯要点 🎯弹性连续力学 | 🎯弱可压缩液体 | 🎯不可压缩流体(烟雾)| 🎯高度场浅水波动 | 🎯质量弹簧系统地面碰撞 | 🎯前向欧拉方法台球刚体运动,动量和动能守…

区块链之快照

定义 区块链快照是区块链技术中一个非常重要的概念,它可以帮助区块链系统提高性能和数据管理效率。 什么是区块链快照 区块链快照是指在某个时间点对整个区块链的状态进行保存和备份的过程。 快照会记录区块链上所有账户的余额、合约状态等信息,并将其序列化存储起来。 这样…

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

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

什么是贸易顺差和贸易逆差?

中文版 贸易顺差和贸易逆差 贸易顺差和贸易逆差是衡量一个国家对外贸易状况的重要指标。它们分别表示一个国家在一定时期内的商品和服务出口总额与进口总额之间的差额。 1. 贸易顺差 (Trade Surplus) 定义:当一个国家的出口总额大于进口总额时,就产生…

web前端教程全套:从入门到精通的全方位探索

web前端教程全套:从入门到精通的全方位探索 在数字时代的浪潮中,Web前端技术作为连接用户与数字世界的桥梁,日益受到重视。本文将围绕Web前端教程的全套内容,从四个方面、五个方面、六个方面和七个方面展开深入剖析,旨…

ASM字节码操纵框架实现AOP

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

访问api是如何使用的

访问api是如何使用的 要访问上述API,您可以使用HTTP客户端,如Postman或curl命令行工具。以下是使用curl命令访问API的示例: 打开终端(Terminal)或命令提示符(Command Prompt)。 在命令行中输入以下curl命令: curl -X POST http://127.0.0.1:5000/dify -H "Cont…

Web前端可以转Java吗:一场技术与职业发展的探索之旅

Web前端可以转Java吗:一场技术与职业发展的探索之旅 在技术的世界里,我们常常面临着选择和挑战。对于许多Web前端开发者来说,是否转向Java开发可能是一个令人困惑且充满爆发力的议题。本文将从四个方面、五个方面、六个方面和七个方面&#…

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…

WPF框架,修改ComboBox控件背景色 ,为何如此困难?

直接修改Background属性不可行 修改控件背景颜色,很多人第一反应便是修改Background属性,但是修改过后便会发现,控件的颜色没有发生任何变化。 于是在网上搜索答案,便会发现一个异常尴尬的情况,要么就行代码简单但是并…

神经网络开发

神经网络开发是一个涉及多个步骤和技术的过程,旨在构建和优化能够模拟人脑神经网络结构和功能的计算模型。以下是神经网络开发的主要步骤和相关信息: 1. 定义问题与确定需求 清晰地定义问题:明确神经网络需要解决的问题类型,如分…

【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为数…

Oracle数据库面试题-11

21. 解释序列(Sequence)在Oracle中的作用。 序列(Sequence)在Oracle数据库中是一种用来生成连续数字序列的数据库对象。它经常被用来生成主键值,因为数据库表中的每一行都需要一个唯一的键值,而序列可以保…

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…

安装nginx的几种方式

1、安装docker 参考:https://www.runoob.com/docker/centos-docker-install.html # 删除旧的docker sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine# 安…