探秘 Mach-O 文件
之前负责项目的包体积优化学习了 Mach-O 文件的格式,那么 Mach-O 究竟是怎么样的文件,知道它的组成之后我们又能做点什么?本文会从 Mach-O 文件的介绍讲起,再看看认识它后的一些实际应用。 Mach-O 文件格式 先让我们看看 Mach-O 的大致构成 再使用 MachOView 一窥究竟 结合可知 Mach-O 文件包含了三部分内容: Header(头部),指明了 cpu 架构、大小端序、文件类型、Load Commands 个数等一些基本信息 Load Commands(加载命令),正如官方的图所示,描述了怎样加载每个 Segment 的信息。在 Mach-O 文件中可以有多个 Segment,每个 Segment 可能包含一个或多个 Section。 Data(数据区),Segment 的具体数据,包含了代码和数据等。 Headers Mach-O 文件的头部定义如下: magic 标志符 0xfeedface 是 32 位, 0xfeedfacf 是 64 位。 cputype 和 cpusubtype 确定 cpu 类型、平台 filetype 文件类型,可执行文件、符号文件(DSYM)、内核扩展等 ncmds 加载 Load Commands 的数量 flags dyld 加载的标志 MH_NOUNDEFS 目标文件没有未定义的符号, MH