编译|程序编译与执行的那些事(1):基本过程
程序编译阶段
程序编译一般有如下几个过程:
- 预处理
- 编译
- 汇编
- 链接
预处理阶段
(预处理器)对包含源代码的文本文件进行处理,如包含头文件、引入宏定义等,生成预处理文件(.i)。
clang生成预处理文件:
$ clang -E test.c -o test.i
-E:只运行预处理步骤
-o:输出到目标文件
编译阶段
(编译器)将预处理文件(.i)翻译成汇编文件(.s)。
汇编文件的每条语句都以一种标准的文本格式确切地描述一条低级机器语言指令,是不同高级语言的通用输出语言。
$ clang -S test.i
-S:只运行预处理和编译步骤
汇编阶段
(汇编器as)将汇编文件翻译成机器语言,将翻译后的指令打包成目标文件(.o)。
$ clang -c test.s
-c:只运行预处理,编译和汇编步骤
链接阶段
- 本文链接:http://katherineleeyq.cn/2018/09/06/编译-程序编译与执行的那些事-1-:基本过程/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!