IOS编译过程

打包的到底经历了哪些过程?

1写入辅助文件。

2运行预设脚本

3编译文件

4链接文件

5拷贝资源文件

6编译故事版(StoryBoard)

7链接故事版

8编译Asset文件

9运行CocoaPods

10生成最新的.app包

11将Swift标准库拷贝到.app里

12签名

13完成打包

写入辅助文件

将项目里面的脚本、依赖库加入在这一步骤创建的一个.app文件里

01

运行预设脚本

在Build Phases里面能见到的三方库以及CocoaPods里所包含的库

编译文件

生成Mach-o可执行文件

链接文件

将所有Mach-o文件合并成一个文件

拷贝资源文件

将资源文件拷贝到.app里

编译故事板文件

链接故事板文件

02

编译Asset文件

如:asset存放的图片资源文件,除开app的icon和启动图,形成机器码

运行CocoaPods

生成包含以上资源的.app文件

拷贝Swift标准库到.app里

签名

将.app文件签名

打包完成


苹果(C/C++/OC)编译器经历的过程,有几部分组成?

编译器

将一种编程语言,即原始语言(OC)转换为另一种编程语言(机器码)的过程

编译器组成部分——前端和后端

1.前端的分析工具有GCC、Clang。主要负责词法分析、语法分析、生成中间代码

2.后端,也就是LLVM。将前端生成的中间代码作为输入,通过LLVM生成机器码

经历过程

03

苹果公司在2007年后,将Clang替代了GCC,效率快了3倍,目的就是为了提升编译器的编译速度

经历了那几个编译过程?

预处理

Clang会预处理你的代码,比如把宏嵌入到对应的位置、删除代码里面的注释

词法分析

语法分析

经过词法分析、语法分析后,会生成一个抽象语法树(AST)

静态分析


04

在这一步会生成更接近机器码的语言,即IR,它会把代码错误、警告全部识别出来

生成中间代码和优化

这一步要做两件事,第一件就是生成汇编语言;第二件就是将汇编语言转换成机器码,也就是我们通常看到的二进制文件.o文件。

链接

将前一步生成的.o文件,转换成Mach-0可执行文件文件


所以到这里你就会明白,其实当你拿到一个项目点击Run或者打包上传AppStore,Archive的时候,它经历了文章最开始讲的13个过程。而当你Build项目的时候,并未有经历签名和打包的2个步骤。

你可能感兴趣的:(IOS编译过程)