在步入工作岗位之后,重新对编程是个什么过程进行了了解
简单的来说,我们平常所写的代码经过编译和链接之后生成可执行文件,下面就编译和链接两个过程分别讨论
编译阶段
编译阶段需要的素材就是你的源文件,把源文件经过一系列神奇的编译操作变成目标文件就是我们的目的,也就是linux系统下使用gcc -o得到的目标文件
预处理简单来说就是宏的展开和头文件的包含,把#include的东西全都复制进去,把文件变大,但是语言本质并没有改变,也就是说你的C还是原来的C
编程语言到汇编语言就是编译器做的工作了,一个好的编译器在这里会下很大的功夫。
可以这么理解,汇编语言和机器语言基本是等价的,区别只不过是汇编语言还是给人看的,机器语言已经不是给人看的了是给机器看的(当然你要是精通机器语言也是吼的),为什么这么说?每一条汇编语言都有机器语言去对应,每一个汇编命令都是遗传二进制码
编译的结果是生成目标文件,每一个编译单元生成对应的一个目标文件,这里还是可以参考linux系统下的gcc -c,使用这条命令的时候会把每个.c文件的文件名拿来直接生成对应的.o文件(就是helloworld.c->helloworld.o)