计算机小白在刚学会编写运行第一个程序后,往往会感到困惑,好奇我写的代码到底为什么可以在电脑内运行,这中间经历了什么?只有明白了这个过程,心中的迷雾才能散开。
我们以c语言为例,介绍从编写源代码到运行程序经历的过程。
一、总言总体上可以分为四个大步骤
1.编译(.c文件---->.s文件)
2.汇编(.s文件---->.obj文件或.o文件)
3.链接(.o文件或.obj文件---->.exe文件或.out文件)
4,运行(加载)
接下来详细展开每个步骤的过程
实际上,在编译器(如windos上的mingw、linux上的gcc)正式编译你的c语言文件前,需要先进行一个叫预处理的过程。
这是因为我们的.c文件中存在宏定义、条件编译、引入头文件、注释,在编译器编译.c文件之前需要对他们做特殊处理
预处理包括: 1.将文件中的宏定义展开
2.处理条件编译指令
3.删除注释(将//之后以及/ /之间的内容删除)
4. 保留# program指令, 该指令会保留到进行汇编的时候进行汇编的预处理
5.编译:编译器把你写的c语言代码翻译成汇编语言的代码
此时,你的.c文件就变为了.s文件
汇编语言也成为符号语言,可以理解为用一些符号代替了二进制码,下面是汇编语言的样子:
汇编器将你之前编译得到的汇编语言代码翻译为二进制机器码,此时,你的.s文件变为.obj文件(在windows上)或.o文件(在linux上),obj/o为objective的缩写,即目标文件
四、链接此时虽然生成了目标文件,我们仍然不能运行它。
这是因为:
1.我们的c代码中会有引入头文件的 *** 作,而把头文件加到我们的程序中,程序才能运行起来。
2.如果我们进行多文件的编译运行,我们需要把这些文件“合起来”,这个 *** 作也在链接的过程中完成
此时,你的.obj/.o文件就变为.exe文件(在windows上)或.out文件(在linux上),即可执行程序
加载器将你的可执行文件从硬盘加载到内存进行运行
这就是从你写的.c文件到可执行文件的全过程。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)