项目编译的流程,从点击app图标到首屏内容展示都经历了什么?

编译流程:

  • 预处理:处理宏定义,删除注释,展开头文件。
  • 词法分析:把代码切成一个个token,比如大小括号等于号还有字符串
  • 语法分析:验证语法是否正确,合成抽象语法树AST
  • 静态分析:查找代码错误
  • 类型检查:动态和静态
  • 目标代码的生成与优化,包括删除多余指令,选择合适的寻址方式,如果开启了bitcode,会做进一步的优化
  • 汇编:由汇编器生成汇编语言
  • 机器码:由汇编语言转成机器码,生成.o文件
    应用启动的流程:
    启动的前提是完成编译,运行程序即运行编译过后的目标程序,它分为main函数前和main函数后:
    main前
  • 加载可执行文件(App的.o文件集合)
  • 加载动态链接库(系统和应用的动态链接库),进行rebase指针调整和bind符号绑定
  • Objc运行时的初始处理,包括Objc相关类的注册,category注册,selector唯一性检查
  • 初始化,包括执行+load()、attribute(constructor)修饰的函数的调用、创建C++静态全局变量
    main后
  • 首页初始化所需要配置文件的读写操作
  • 首页界面渲染

你可能感兴趣的:(项目编译的流程,从点击app图标到首屏内容展示都经历了什么?)