什么是编译和链接??经典解释
2013-01-07 16:16
267 查看
编译:
首先要把源文件编译成中间代码文件,在Windows下也就是 .obj 文件,UNIX下是 .o 文件,即 Object File,这个动作叫做编译(compile)。
编译时,编译器需要的是语法的正确,函数与变量的声明的正确。对于后者,通常是你需要告诉编译器头文件的所在位置(头文件中应该只是声明,而定义应该放在C/C++文件中),只要所有的语法正确,编译器就可以编译出中间目标文件。一般来说,每个源文件都应该对应于一个中间目标文件(O文件或是OBJ文件)。
链接:
然后再把大量的Object File合成执行文件,这个动作叫作链接(link)
链接时,主要是链接函数和全局变量,所以,我们可以使用这些中间目标文件(.O文件或是.OBJ文件)来链接我们的应用程序。链接器并不管函数所在的源文件,只管函数的中间目标文件(Object File),在大多数时候,由于源文件太多,编译生成的中间目标文件太多,而在链接时需要明显地指出中间目标文件名,这对于编译很不方便,所以,我们要给中间目标文件打个包,在Windows下这种包叫“库文件”(Library File),也就是 .lib 文件,在UNIX下,是Archive File,也就是 .a 文件。
首先要把源文件编译成中间代码文件,在Windows下也就是 .obj 文件,UNIX下是 .o 文件,即 Object File,这个动作叫做编译(compile)。
编译时,编译器需要的是语法的正确,函数与变量的声明的正确。对于后者,通常是你需要告诉编译器头文件的所在位置(头文件中应该只是声明,而定义应该放在C/C++文件中),只要所有的语法正确,编译器就可以编译出中间目标文件。一般来说,每个源文件都应该对应于一个中间目标文件(O文件或是OBJ文件)。
链接:
然后再把大量的Object File合成执行文件,这个动作叫作链接(link)
链接时,主要是链接函数和全局变量,所以,我们可以使用这些中间目标文件(.O文件或是.OBJ文件)来链接我们的应用程序。链接器并不管函数所在的源文件,只管函数的中间目标文件(Object File),在大多数时候,由于源文件太多,编译生成的中间目标文件太多,而在链接时需要明显地指出中间目标文件名,这对于编译很不方便,所以,我们要给中间目标文件打个包,在Windows下这种包叫“库文件”(Library File),也就是 .lib 文件,在UNIX下,是Archive File,也就是 .a 文件。
相关文章推荐
- 编译和解释的区别是什么?
- VC的IDE在编译链接时做了些什么--- 逆向工程写自己的vcspawn
- "什么是IOC?"超经典解释!!
- GCC Coverage代码分析-编译过程自动化及对链接的解释
- GCC Coverage代码分析-编译过程自动化及对链接的解释
- emacs下编译链接c++文件的命令是什么
- 什么是预编译,何时需要预编译? 多个文件链接成一个文件
- 解释执行的语言相比编译执行的语言有什么优缺点?
- 程序的编译与解释有什么区别?
- Linux下程序的编译链接及装载(解释)运行
- 编译和解释的区别是什么
- 织梦的最终列表页,频道封面,外部链接有什么区别 虽然里面有解释了,看不懂,可以举例子么
- 编译和解释的区别是什么
- VC的IDE在编译链接时做了些什么--- 逆向工程写自己的vcspawn
- 编译和解释的区别是什么?
- VC的IDE在编译链接时做了些什么
- 编译和解释的区别是什么?
- 编译和解释的区别是什么?
- 链接一个做水的例子(虽然什么解释都没有)
- 编译和解释的区别是什么?