营业执照不干了不注销会怎样,太原百度推广优化排名,wordpress发微信公众号,私人兼职做网站开发编译二进制文件说明 如何生成文件路径文件说明第一部分#xff1a;.o文件第二部分#xff1a;link第三部分#xff1a;Segment第四部分#xff1a;Symbol 如何生成
使用Xcode进行编译 #xff0c;会生成二进制相关文件#xff0c;可以更详细看产物的布局
项目Target -.o文件第二部分link第三部分Segment第四部分Symbol 如何生成
使用Xcode进行编译 会生成二进制相关文件可以更详细看产物的布局
项目Target - Build Setting - Linking Genera - Write Link Map YES
文件路径
执行上述操作后CommandB后会生成二进制的产物(我的项目名为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]