编译源文件的流程
来复习一下编译 Objective-C
源文件的过程吧。用下面的命令输出编译源文件的不同阶段:
clang -ccc-print-phases main.m
输出结果如下:
0: input, "main.m", objective-c
1: preprocessor, {0}, objective-c-cpp-output
2: compiler, {1}, ir
3: backend, {2}, assembler
4: assembler, {3}, object
5: linker, {4}, image
6: bind-arch, "x86_64", {5}, image
简单解释一下1-6的处理:
- 预处理:处理包括宏替换、头文件导入;
- 编译生成IR(中间代码):词法分析、生成AST、静态分析等,然后生成LLVM代码;
- 汇编器生成汇编代码;
- 汇编器将可读的汇编代码转换为机器代码;
- 将多个目标对象文件合并为一个可执行文件;
- 生成image文件,即最后的可执行文件;
参考