-
我们在进入mian()函数之前发生了什么事情
-
Mach -O的格式
-
虚拟内存基础知识
-
二进制Mach -O怎么被加载和准备
实用部分:
-
怎么去计算启动时间
-
优化启动时间
主要简单的介绍了Mach -O和虚拟内存的知识,下文在app启动的时会有很多相关的术语,不知道会懵逼。
Mach-O为Mach Object文件格式的缩写,它是一种用于可执行文件,目标代码,动态库,内核转储的文件格式。作为a.out格式的替代,Mach-O提供了更强的扩展性,并提升了符号表中信息的访问速度。
Mach-O曾经为大部分基于Mach核心的操作系统所使用。NeXTSTEP,Darwin和Mac OS X等系统使用这种格式作为其原生可执行文件,库和目标代码的格式。而同样使用GNU Mach作为其微内核的GNU Hurd系统则使用ELF而非Mach-O作为其标准的二进制文件格式。
深度了解可以看下这篇文章:探秘 Mach-O 文件
Mach-O术语
文件类型:
-
Executable:应用的主要二进制文件(比如.o文件)
-
Dylib:动态库(又称 DSO 或 DLL)
-
Bundle: 资源文件,不能被链接的 Dylib,只能在运行时使用 dlopen() 加载
Image:指的是Executable,Dylib或者Bundle的一种,文中会多次使用Image这个名词。
Framework:动态库和对应头文件和资源的集合
Mach-O文件
介绍了 Mach-O内部结构,每个分区和如何支持不同架构等。
1、 Mach-O被分为下图的几个segment: