编译程序的四个过程简介
简要介绍编译、编译器和编译过程
# 编译
将人类比较容易理解的高级语言(例如C/C++,FORTRAN等),“翻译”为,计算机能够识别的二进制语言。
# 编译器
编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。
# 编译过程
- 预处理
- 编译
- 汇编
- 链接
# 举例
编写源代码hello.c:
#include <stdio.h>
int main()
{
printf("hello, world\n");
}
1
2
3
4
5
2
3
4
5
详细过程: 将源代码hello.c,通过预处理器cpp,生成预处理后的中间文件hello.i(还是源码语言)
gcc -E hello.c -o hello.i
1
将预处理后的文件hello.i,通过编译器cc1,生成汇编文件hello.s(汇编语言)
gcc -S hello.i -o hello.s
1
将汇编文件hello.s,通过汇编器as,生成目标文件hello.o(二进制语言)
gcc -c hello.s -o hello.o
1
将目标文件,通过链接器ld,链接成一个可执行的文件hello
gcc hello.o -o hello
1
一般情况下,gcc会替我们做这些事儿。直接输入下面的命令,就能自动完成一些列操作了
gcc -o hello hello.cpp
1