库文件是已经被编译的目标代码文件,通过链接过程进行代码的定位以执行这些代码。链接可以分为静态链接和动态链接,前者是在编译期完全确定所需要的执行的代码集合,通过程序中编译并链接(链接器链接.lib、.a等静态库文件和.obj、.o等其它目标文件)的目标代码指令定位调用代码,比较直接,时间效率通常较高,但生成的可执行文件可能会很大,且非常不方便在运行期共享目标代码;后者是程序在运行期载入动态库文件(例如.dll、.so)然后定位需要的代码,优点是共享目标代码方便,可执行文件体积可以很小,缺点是技术较复杂,平台相关性大导致跨平台性差,移植可能比较困难,此外动态库文件的依赖拆枯态性和版本管理可能会非常麻烦(比如“dll地狱旅源”)。
对于库文件,可以通过编译程序中的归档程序(生成静态库文件;例如lib.exe、ar)和动态库生成程序(可能是编译器和链接器)生成,当然实现的编译还是要通过编译器(例如cl.exe、gcc)。高级的用法可以使用make工具(例如VC++的NMake,GCC配套的GNU make等)来管理的这些源文件和目标文败明件的依赖性。一般IDE中建立专门类型的工程可以简化或者不使用命令行 *** 作,在全编译时同时产生可执行文件和库文件(也可以不产生可执行文件)。
====
[原创回答团]
确切地说:不行.到目前为止,计算机能直接识别和处理的语言只有一种:机器语言,这是虚孝用一连串的0和1来表示的二进制的代码.汇编语言是在机器语言的基础上,将一些信息符号化后产生的.比如假设原来001在机器语言里表示加法,现在用ADD这个符号来表示加法,就容易被理解和使用.用宏枣汇编语言写的程序代码要执行,必须经过汇编和连接等几个步骤才可以,汇编的目的主要是检查有没有语法错误等等,而连接,则是和具体的 *** 作系统相联系,生成可执行的代码文件--机器语言程序.实际上用高级语言写的代码也是,要经过编译后生成可执行的代码文件才可以由计算机执行,这些代码文件,也就是最终的机器语言程序.需要补充的是,现在有一些研究中的计算机,可以直接识别和执行高级语言,那实际上蔽誉拆是将对应的编译模块等嵌入到硬件里面了,本质上还是需要将高级语言信息转换为对应的二进制控制信号.C语言是一种中级语言,用户用C语言编写的程序称为源程序,源程序文件的后缀一般必须为“.c”芹搜。计算机硬件不能直接执行源程序,嫌返历必须将源程序翻译成二进制目标程序。翻译工作是由编译程序完成的,翻译的过程称为编译,编译的结果称为目世迹标程序,目标程序文件后缀一般为“.OBJ”。程序翻译成目标程序后,便可进行连接。“连接”的目的是使程序变成在计算机上可以执行的最终形式。在这一阶段,系统程序库中的程序要与目标程序连接,连接的结果称为执行程序,执行程序文件名字一般以“.EXE”结尾。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)