iOS操作系统-- App启动流程分析与优化
来源:互联网
背景知识:
mach-o文件为基于Mach核心的操作系统的可执行文件、目标代码或动态库,是.out的代替,其提供了更强的扩展性并提升了符号表中信息的访问速度,
符号表,用于标记源代码中包括标识符、声明信息、行号、函数名称等元素的具体信息,比如说数据类型、作用域以及内存地址,iOS符号表在dSYM文件中
程序构建过程:编译分三步走,对 源文件进行预处理(processing),处理预编译指令,生成.i文件,下一步进行编译,进行词法分析(lex工具识别词法规则语义表)、语法分析和语义分析生成.s汇编文件,最后进行汇编,生成二进制目标文件.o。目标文件再进行链接器链接,形成可执行文件.a或mach-o文件。
链接分为动态链接和静态链接,静态链接会将所有目标文件.o全部内容链接到执行文件中,如果另外的执行文件需要其中的功能,也必须全部收录。动态链接为了解决这样的空间浪费问题,只将函数信息链接加入执行文件
dyld是加载动态链接库的库,该库在加载可执行文件的时候,递归加载所需要的所有动态库。动态库包括iOS操作系统的系统framework,oc的runtime系统libobjc,系统级别的库libSystem,例如libdispatch(GCD)、libsystem_block(Block)
App启动大致流程
背景知识:
mach-o文件为基于Mach核心的操作系统的可执行文件、目标代码或动态库,是.out的