Ⅰ C语言编译怎样连接lib文件,请讲解连接的原理,
广义的代码编译过程,实际上应该细分为:预处理,编译,汇编,链接。
预处理过程,负责头文件展开,宏替换,条件编译的选择,删除注释等工作。gcc –E表示进行预处理。
编译过程,负载将预处理生成的文件,经过词法分析,语法分析,语义分析及优化后生成汇编文件。gcc –S表示进行编译。
汇编,是将汇编代码转换为机器可执行指令的过程。通过使用gcc –C或者as命令完成。
链接,负载根据目标文件及所需的库文件产生最终的可执行文件。链接主要解决了模块间的相互引用的问题,分为地址和空间分配,符号解析和重定位几个步骤。实
际上在编译阶段生成目标文件时,会暂时搁置那些外部引用,而这些外部引用就是在链接时进行确定的。链接器在链接时,会根据符号名称去相应模块中寻找对应符
号。待符号确定之后,链接器会重写之前那些未确定的符号的地址,这个过程就是重定位。
Ⅱ C语言源程序文件经过编译连接之后生成一个后缀为_____的文件。
如果只生成一个文件,那么这个题目答案是B。编译(compile)后生成目标文件,后缀:.obj。也就是机器码。
然后链接器(Linker) 连接生成可执行文件,后缀:.exe。最后运行命令(go),直接运行.exe文件。
(2)编译连接的过程扩展阅读:
简单讲,编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。
一个现代编译器的主要工作流程:源代码(source code) →预处理器(preprocessor) →编译器(compiler) →目标代码(object code) →链接器(Linker) → 可执行程序(executables)
高级计算机语言便于人编写,阅读交流,维护。机器语言是计算机能直接解读、运行的。
编译器将汇编或高级计算机语言源程序(Source program)作为输入,翻译成目标语言(Target language)机器代码的等价程序。
源代码一般为高级语言 (High-level language), 如Pascal、C、C++、Java、汉语编程等或汇编语言。
而目标则是机器语言的目标代码(Object code),有时也称作机器代码(Machine code)。
对于C#、VB等高级语言而言,此时编译器完成的功能是把源码(SourceCode)编译成通用中间语言(MSIL/CIL)的字节码(ByteCode)。
最后运行的时候通过通用语言运行库的转换,编程最终可以被CPU直接计算的机器码(NativeCode)。
Ⅲ C语言 四个过程:预处理,编译,汇编,链接,分别进行了什么过程别度娘。
1.预处理 这个阶段用来处理所有的预处理指令 - 主要是一些宏替换,头文件导入
2.编译 对预处理后的代码进行翻译工作,得到计算机
所认识的格式编译工作得到的结果文件叫做目标文件,
扩展名是.o(编译得到汇编文件(.s) ->经过汇编后得到.o目标文件)
3.链接 把所有的目标文件和其他必要的文件合并在一起
得到最终的可执行文件
Ⅳ 程序编辑,程序编译,程序连接
编辑,类似于文本编辑,将程序代码输入进去,可以修改,增加,删除
编译,将程序代码按一定规则变换成机器可以识别的可执行代码序列,
连接,将编译的代码序列与必须的启动代码,用到的库文件按规则组合连接成可执行程序
Ⅳ 用MASM6.0编写的汇编怎么编译连接运行
第一步:
把源程序放在masm6.0目录下,假如写好一个liti.asm源文件,就是说把liti.asm文件和masm6.0的masm.exe等文件放在同一个文件夹中。例如:如果你的masm.exe和link.exe等那些文件在e:\abc目录下,那么把源程序liti.asm文件也放郑游在这个目录中。
第二步:
开始——运行——输入cmd打开命令行衡丛嫌窗口,通过dos指令(这个会吗?)进入到abc目录下。就是命令行中显示 e:\abc>
然后在“>”后输入masm liti.asm
整个命令行这样显示
e:\abc>masm liti.asm
然后一路回车按下去
这是编译的过程,如果编译通过,无错误,会生成liti.obj文件,
进入下一步链接
e:\abc>link liti.obj
然后就一路回车按下去
这是连接的过程,如果链接无错,那么就会生成liti.exe文件,就可以执行它了。
e:\abc>liti
然后按回车,咐手就能执行了
Ⅵ c语言里面的编译和链接是怎么回事
C/C++语言的完整编译过程是
一、预编译
处理#define #if #include这类#开头的语句,这些称为预编译指令。这个过程中会把.h文件和.c/.cpp文件组合成最终交给compile过程的原文件。这个原文件是不包含任何#开头的语句的。所有#define定义的宏也会被替换。
二、编译
把上面那个原文件编译成.o或者VC里是.obj文件。这个文件保存了机器码化的函数、函数的描述、全局变量的描述、乃至段的描述等等。
三、连接
把可执行程序需要的所有的编译过程产生的.o或者.obj文件组合到一起。(这里也包括.lib文件,.lib文件件本质上就是打包的.obj文件集合)。另外连接过程还会组合一些其他数据,比如资源、可执行文件头等等。
Ⅶ C语言文件的编译与执行的四个阶段并分别描述
开发C程序有四个步骤:编辑、编译、连接和运行。
任何一个体系结构处理器上都可以使用C语言程序,只要该体系结构处理器有相应的C语言编译器和库,那么C源代码就可以编译并连接到目标二进制文件上运行。
1、预处理:导入源程序并保存(C文件)。
2、编译:将源程序转换为目标文件(Obj文件)。
3、链接:将目标文件生成为可执行文件(EXE文件)。
4、运行:执行,获取运行结果的EXE文件。
(7)编译连接的过程扩展阅读:
将C语言代码分为程序的几个阶段:
1、首先,源代码文件测试。以及相关的头文件,比如stdio。H、由预处理器CPP预处理为.I文件。预编译的。文件不包含任何宏定义,因为所有宏都已展开,并且包含的文件已插入。我归档。
2、编译过程是对预处理文件进行词法分析、语法分析、语义分析和优化,生成相应的汇编代码文件。这个过程往往是整个程序的核心部分,也是最复杂的部分之一。
3、汇编程序不直接输出可执行文件,而是输出目标文件。汇编程序可以调用LD来生成可以运行的可执行程序。也就是说,您需要链接大量的文件才能获得“a.out”,即最终的可执行文件。
4、在链接过程中,需要重新调整其他目标文件中定义的函数调用指令,而其他目标文件中定义的变量也存在同样的问题。
Ⅷ 程序编译连接的过程中各干了什么事情
呵呵,楼主应该看看《编译原理》。
我的空间里的一篇日志或许对楼主也有帮助。
链接是把程序代码与所需要的其他目标代码,或函数库,Run-time 库连接在一起。
比如 printf,程序代码里没有它内部实现的代码,只是说要调用这个功能。
连接程序会把它内部实现代码从 Run-time 库里提出来,放在一起,这样程序才可以单独执行。
对于使用了第三方函数库的代码来说,链接程序同样会在第三方函数库中提取相关内容,加在一个可执行文件(Exe 或其他)中。
另外,一些比较大的程序,可能会分若干个文件,它们互相调用彼此的函数。可以独立编译成若干个目标代码。如果这些函数有的缺失了,编译也可以通过。
这样做的好处是,对于大型程序,分成若干部分分别编译,加快了编译过程。同时,减少每个源码文件的行数。
比如,写一个计算程序。后台计算有一个文件,可以编译成功。前台界面有一个文件,也可以编译成功。它们分辨编译成两个不同的目标代码文件(obj 或其他)
然后经过链接过程
这个例子的话,可以认为有这个式子:
前台.obj + 后台.obj + .... + 第三方函数库 + Run-time 库 = Exe
链接的时候,才会检查这种相互依赖是否完整。
比如前台部分是否使用了有些函数,而这些函数在后台处理模块中并不存在?或者忘记写这个函数了?
或者是否调用了一个后台函数,而这个函数的参数与调用的时候根本不一致?
发生这些情况时,才会给出链接警告和错误。
Ⅸ c语言中的编辑,编译,连接,运行分别是什么意思
1、编辑:编写代码,制作C语言的源文件。
2、编译:是由编译程序将C语言源文件转换成二进制中间文件,对文件内部的语法语义做处理,如果编译出错,无法进行后续动作。
3、链接:将编译中生成的中间文件组合成二进制可执知行文件,这一步会对文件之间的关联做检查,如果出错,将不会生成可执行文件,也就无法执行。
4、执行:运行可执行文件,这一步道是编写代码的最终目的。
(9)编译连接的过程扩展阅读:
DOS命令通常分为三类:内部命令、外部命令和批处理命令。
1、内部命令:
其包含在命令解释程序COMMAND.COM中,一旦启动DOS,这些命令就被调入内存,只要在DOS系统提示符下输入这些命令,就可立即执行。
2、外部命令:
其以文件的形式存储在系统盘上,所带扩展名为COM和EXE。DOS启动时,它们并没有被调入内存,执行前必须从系统盘读进内存。因此输入外部命令时,要了解该命令是否在当前盘上,不然DOS无法找到它们。
3、批处理命令:
实际上是个文件,该文件包含多条命令,当用户键入批处理文件名时,DOS将顺序执行其中的各条命令。注意,批处理命令必须用“.BAT”作为扩展名。
C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单。
当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则就会显得十分重要。
网络-运行命令
网络-C语言