编译过程
参考:
https://objccn.io/issue-6-1/
https://objccn.io/issue-6-3/
https://objccn.io/issue-6-2/
https://www.jianshu.com/p/65901441903e
http://blog.chinaunix.net/uid-31439230-id-5763397.html
https://blog.csdn.net/Future_One/article/details/81882359
1 预处理
符号化 (Tokenization)
宏定义的展开
#include 的展开
2 语法和语义分析
将符号化后的内容转化为一棵解析树 (parse tree)
解析树做语义分析
输出一棵抽象语法树(Abstract Syntax Tree* (AST))
3生成代码和优化
将 AST 转换为更低级的中间码 (LLVM IR)
对生成的中间码做优化
生成特定目标代码
输出汇编代码
4 汇编器
将汇编代码转换为目标对象文件。
5 链接器
将多个目标对象文件合并为一个可执行文件 (或者一个动态库)
网友评论