程序的编译和链接
一般来说,无论是C、C++、还是pas,首先要把源文件编译成中间代码文件,在Windows下也就是 .obj 文件,UNIX下是 .o 文件,即 Object File,这个动作叫做编译(compile)。然后再把大量的 Object File合成执行文件,这个动作叫作链接(link)。
编译时,编译器需要的是语法的正确,函数与变量的声明的正确。对于后者,通常是你需要告诉编译器头文件的所在位置(头文件中应该只是声明,而定义应该放在C/C++文件中),只要所有的语法正确,编译器就可以编译出中间目标文件。一般来说,每个源文件都应该对应于一个中间目标文件(O文件或是 OBJ文件)。
链接时,主要是链接函数和全局变量,所以,我们可以使用这些中间目标文件(O文件或是OBJ文件)来链接我们的应用程序。链接器并不管函数所在的源文件,只管函数的中间目标文件(Object File),在大多数时候,由于源文件太多,编译生成的中间目标文件太多,而在链接时需要明显地指出中间目标文件名,这对于编译很不方便,所以,我们要给中间目标文件打个包,在Windows下这种包叫“库文件”(Library File),也就是 .lib
文件,在UNIX下,是Archive File,也就是 .a 文件。
总结一下,源文件首先会生成中间目标文件,再由中间目标文件生成执行文件。在编译时,编译器只检测程序语法,和函数、变量是否被声明。如果函数未被声明,编译器会给出一个警告,但可以生成Object File。而在链接程序时,链接器会在所有的Object File中找寻函数的实现,如果找不到,那到就会报链接错误码(Linker Error),在VC下,这种错误一般是:Link 2001错误,意思说是说,链接器未能找到函数的实现。你需要指定函数的Object
File.
分享到:
相关推荐
用C语言编程时程序的编译和连接程序,编写程序时用C语言写了程序,用这个可以在Windows下来编译和连接成可执行文件。
用于汇编程序编译链接调试的工具
LINUX下多个c程序编译链接的程序,经验证可以执行,并搭配了MAKEFILE文件
将exe程序和“链接器目录配置.ini”文件,复制到易语言安装目录的"tools"文件夹下。并且对"链接器目录配置.ini"进行修改,配置内容例子如下↓。VC6="D:\Program Files (x86)\易语言v5.11\VC98linker\Bin\LINK.EXE"。...
单片机程序编译原理(讲得很好) 【程序】编译原理 编译的概念:编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作...
实现一个小型编译程序。 (1) 输入:高级语言源程序; (2) 输出:四元式程序(必做) 汇编语言程序(选做)。 小型编译程序执行分两个阶段: (1) 第一阶段,将高级语言源程序翻译成四元式程序; (2) 第二...
IAR编译链接说明,包括编译过程,链接过程,后链接过程,LCF的简单说明等。
本书对编译器、汇编器、链接器、编译优化器涉及的关键算法、数据结构和程序实现流程,以及ELF文件的格式、Intel指令格式均作了详细的说明,并结合大量的图表,展示了编译系统工作过程中代码信息的流动和存储格式的...
C与C++程序编译链接全过程解析
程序集,作为.NET时代的动态链接库,蕴藏了太多的软件秘密。为此,Visual Studio内置的ILDASM成为最初挖掘程序集的上佳工具。但自从Reflector出现后,ILDASM相形见绌。因为,Reflector能提供更多的程序集信息,而且...
编译程序:masm.exe 链接程序:link.exe
ARM RVCT 编译工具链接器和实用程序指南_中文版(学习scatter file) ,里面有详细的介绍了scatter file的写法。
cjson编译好的动态链接库,so和dll,32位,可以在loadrunner中直接使用
编译和链接全文,相当精彩,全面介绍了链接和程序加载概念,揭示了许多应用程序员平时知其然不知其所以然的概念
Realview编译工具4.0版链接器参考指南 Realview编译工具4.0版链接器参考指南
C和C++嵌入式系统编程 -03 -编译、链接和定址
对于我们在编译程序时所碰到的错误其代码以及解决方法有详细的解释。
使用C/C++语言开发软件的程序员经常碰到这样的问题:有时候是程序编译没有问题,但是链接的时候总是报告函数不存在(经典的LNK 2001错误),有时候是程序编译和链接都没有错误,但是只要调用库中的函数就会出现堆栈...
本示例演示了编译多个可执行程序,需链接动态库,静态库,且需先编译库,并且库与库之间存在依赖关系的makefile的编写方式,makefile文件内部有详细的注释,目录下也有介绍文档,请务必按照里面的步骤操作,保证可以...