编译和链接的联系
㈠ 什么叫编译,什么又叫链接
编译就是将源程序翻译为机器代码,机器代码一般以*.obj文件保存。
链接就是将上一步产生的obj文件与操作系统动态库组合为可执行的exe文件。
㈡ 什么是编译,什么是联接。它们之间有什么联系呀
一个是翻译工作,把高级语言翻译成汇编语言
一个是连接工作,把不同部分弄到一起组成程序
组的来说,就是:一个翻译,一个秘书。
㈢ c语言中的编辑,编译,连接,运行分别是什么意思
1、编辑:编写代码,制作C语言的源文件。
2、编译:是由编译程序将C语言源文件转换成二进制中间文件,对文件内部的语法语义做处理,如果编译出错,无法进行后续动作。
3、链接:将编译中生成的中间文件组合成二进制可执知行文件,这一步会对文件之间的关联做检查,如果出错,将不会生成可执行文件,也就无法执行。
4、执行:运行可执行文件,这一步道是编写代码的最终目的。
(3)编译和链接的联系扩展阅读:
DOS命令通常分为三类:内部命令、外部命令和批处理命令。
1、内部命令:
其包含在命令解释程序COMMAND.COM中,一旦启动DOS,这些命令就被调入内存,只要在DOS系统提示符下输入这些命令,就可立即执行。
2、外部命令:
其以文件的形式存储在系统盘上,所带扩展名为COM和EXE。DOS启动时,它们并没有被调入内存,执行前必须从系统盘读进内存。因此输入外部命令时,要了解该命令是否在当前盘上,不然DOS无法找到它们。
3、批处理命令:
实际上是个文件,该文件包含多条命令,当用户键入批处理文件名时,DOS将顺序执行其中的各条命令。注意,批处理命令必须用“.BAT”作为扩展名。
C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单。
当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则就会显得十分重要。
网络-运行命令
网络-C语言
㈣ 简述一下编译器和链接器的作用
1、编译器:
编译器对源文件进行编译,就是把源文件中的文本形式存在的源代码翻译成机器语言形式的目标文件的过程,在这个过程中,编译器会进行一系列的语法检查。如果编译通过,就会把对应的CPP转换成OBJ文件。
2、链接器:
当链接器进行链接的时候,首先决定各个目标文件在最终可执行文件里的位置。然后访问所有目标文件的地址重定义表,对其中记录的地址进行重定向(加上一个偏移量,即该编译单元在可执行文件上的起始地址)。
然后遍历所有目标文件的未解决符号表,并且在所有的导出符号表里查找匹配的符号,并在未解决符号表中所记录的位置上填写实现地址。最后把所有的目标文件的内容写在各自的位置上,再作一些另的工作,就生成一个可执行文件。
㈤ 用C语言编的程序,要生成可执行文件的时候,要编译、链接,编译是什么意思啊链接是什么意思编译和链接
编译就是把C代码转换成CPU可执行的机器指令,每个.c文件生成一个.obj文件。
链接就是把生成的(多个)
.obj
文件及用到的库文件(.lib)一起组合生成可执行文件(.exe)。
㈥ C语言中编译程序和连接程序的作用和原理是什么关键是原理,越详细越好,谢了~
详细了你也不一定能理解,你对底层的了解程度如何?
简单的来说编译就是生成语言无关的obj文件,连接就是将所有的obj文件连接起来,查找里面的符号按照COFF文件的标准生成dll或EXE。
㈦ 如何理解程序的编译,链接,加载等各个过程
编译是将高级程序语言(c,c++,c#等)转换成汇编语言,并且将变量翻译成寄存器
链接是将多个编译过的文件组合成一个文件,并且加入程序调用的库函数等所需的其他资源
加载是将以上处理过的后生成的指令(二进制码)在执行前加载到内存中,并提供地址翻译。
㈧ c语言里面的编译和链接是怎么回事
C/C++语言的完整编译过程是
一、预编译
处理#define #if #include这类#开头的语句,这些称为预编译指令。这个过程中会把.h文件和.c/.cpp文件组合成最终交给compile过程的原文件。这个原文件是不包含任何#开头的语句的。所有#define定义的宏也会被替换。
二、编译
把上面那个原文件编译成.o或者VC里是.obj文件。这个文件保存了机器码化的函数、函数的描述、全局变量的描述、乃至段的描述等等。
三、连接
把可执行程序需要的所有的编译过程产生的.o或者.obj文件组合到一起。(这里也包括.lib文件,.lib文件件本质上就是打包的.obj文件集合)。另外连接过程还会组合一些其他数据,比如资源、可执行文件头等等。
㈨ c语言里面的编译和链接是怎么回事啊
编译是把你输入的源代码生成目标代码(即:以.obj为后缀名的文件),连接是把.obj文件和系统库相连接(如:#include 中所声明的文件)。如果直接按run,如果源代码正确则是系统自动编译连接,要是源代码有错误则无法运行,并显示错误信息。