当前位置:首页 » 编程软件 » 对编译和链接的认识

对编译和链接的认识

发布时间: 2023-01-03 00:03:40

㈠ 什么叫编译,什么又叫链接

编译就是将源程序翻译为机器代码,机器代码一般以*.obj文件保存。
链接就是将上一步产生的obj文件与操作系统动态库组合为可执行的exe文件。

㈡ 什么是程序编辑,编译,连接

编辑就是写代码,编写程序。
编译就是将高级语言转换成机器能识别的语言。
链接就是找程序运行是依赖的库文件等。

c语言里面的编译和链接是怎么回事

C/C++语言的完整编译过程是

一、预编译

处理#define #if #include这类#开头的语句,这些称为预编译指令。这个过程中会把.h文件和.c/.cpp文件组合成最终交给compile过程的原文件。这个原文件是不包含任何#开头的语句的。所有#define定义的宏也会被替换。

二、编译
把上面那个原文件编译成.o或者VC里是.obj文件。这个文件保存了机器码化的函数、函数的描述、全局变量的描述、乃至段的描述等等。

三、连接
把可执行程序需要的所有的编译过程产生的.o或者.obj文件组合到一起。(这里也包括.lib文件,.lib文件件本质上就是打包的.obj文件集合)。另外连接过程还会组合一些其他数据,比如资源、可执行文件头等等。

㈣ VC中编译与连接有什么区别

要连接要先编译,如果没编译会连接时会自动编译。举个例子,如果你有两个文件,对一个文件进行编译只是讲这个文件编译成了目标文件.obj,但是另外一个文件没有,需对另外一个文件进行编译,可以观察结果输出框的显示,这时连接便会将两个文件连接在一起,才会将互相调用的函数等联系起来,生成.exe。如果不编译直接点连接,系统自动将两个文件编译,并连接,生成.exe文件。
假设两个文件分别是a.cpp,b.cpp,a调用b的函数:
编译a:
--------------------Configuration: a - Win32 Debug--------------------
Compiling...
a.cpp

a.obj - 0 error(s), 0 warning(s)
然后编译b:
--------------------Configuration: a - Win32 Debug--------------------
Compiling...
b.cpp

b.obj - 0 error(s), 0 warning(s)
然后连接:
--------------------Configuration: a - Win32 Debug--------------------
Linking...

a.exe - 0 error(s), 0 warning(s)

假如编译一个后直接连接:
编译a:无变化
--------------------Configuration: a - Win32 Debug--------------------
Compiling...
a.cpp

a.obj - 0 error(s), 0 warning(s)
直接连接:
--------------------Configuration: a - Win32 Debug--------------------
Compiling...
b.cpp
Linking...

a.exe - 0 error(s), 0 warning(s)

如果两个都不编译,直接点连接:
--------------------Configuration: a - Win32 Debug--------------------
Compiling...
a.cpp
b.cpp
Linking...

a.exe - 0 error(s), 0 warning(s)
注意:假如文件没有被修改的话,编译一次后不会再进行编译了,可以直接连接,如果这时不编译,直接点连接,也只是连接,没有编译过程。
编译.h文件会提示不能编译,因为.h一般存放的是函数的声明,类的定义等,系统不会编译,但是可以在头文件中点连接进行整个程序的编译连接过程。
连接后就可以运行了,也可以在没编译、连接时点运行,系统会自动编译、连接。

㈤ c语言中的编辑,编译,连接,运行分别是什么意思

编辑就是对代码的编写,按照c语言规则,编写完成一定功能的代码。
编译就是对代码进行编译,让代码从高级语言编译成可以让电脑识别运算的机器码。
连接就是对代码各个函数等进行,连接
运行就是运行所编辑代码组成的程序。

㈥ 简述一下编译器和链接器的作用

1、编译器:
编译器对源文件进行编译,就是把源文件中的文本形式存在的源代码翻译成机器语言形式的目标文件的过程,在这个过程中,编译器会进行一系列的语法检查。如果编译通过,就会把对应的CPP转换成OBJ文件。
2、链接器:
当链接器进行链接的时候,首先决定各个目标文件在最终可执行文件里的位置。然后访问所有目标文件的地址重定义表,对其中记录的地址进行重定向(加上一个偏移量,即该编译单元在可执行文件上的起始地址)。
然后遍历所有目标文件的未解决符号表,并且在所有的导出符号表里查找匹配的符号,并在未解决符号表中所记录的位置上填写实现地址。最后把所有的目标文件的内容写在各自的位置上,再作一些另的工作,就生成一个可执行文件。

㈦ 用C语言编的程序,要生成可执行文件的时候,要编译、链接,编译是什么意思啊链接是什么意思编译和链接

编译就是把C代码转换成CPU可执行的机器指令,每个.c文件生成一个.obj文件。
链接就是把生成的(多个) .obj 文件及用到的库文件(.lib)一起组合生成可执行文件(.exe)。

㈧ 怎么理解C++编译、连接、运行

编译是将各个模块转化为机器语言的对象文件
连接就是把这些对象文件再组合,将模块与模块之间的入口与出口衔接起来
例如你自己写个单文件程序,你自己的程序是一个模块
然后你在头文件里面调用的东西又是几个模块
各个模块之间被调用的函数称为符号
编译的时候引用其他模块的地方用符号标注,但是不指向实际地址
连接的时候将模块进行组合,求得各个符号的偏移地质,再按照符号列表填入各个模块实现实际调用,这才是一个完整的程序
运行就不多说了,就是把程序调入机器完成特定逻辑的步骤

㈨ 如何理解程序的编译,链接,加载等各个过程

编译是将高级程序语言(c,c++,c#等)转换成汇编语言,并且将变量翻译成寄存器
链接是将多个编译过的文件组合成一个文件,并且加入程序调用的库函数等所需的其他资源
加载是将以上处理过的后生成的指令(二进制码)在执行前加载到内存中,并提供地址翻译。

㈩ 为什么要对C源程序进行编译、链接

首先要说的是C语言属于高级语言,不能直接被计算机识别而执行,所以需要一些操作来转化。。一开始是编译预处理,对宏,包含指令,编译指令等进行处理,然后是词法语法分析,将源代码翻译成中间代码(一般是汇编),接着优化代码,,然后将中间代码翻译成机器语言(目标文件),机器语言是计算机的基层语言,能被计算机直接识别。。接着链接目标文件,生成可以执行文件。。。大概就是这样。。详细的LZ可看这个总结。。http://bbs.zdnet.com.cn/thread-1614727-1-1.html

热点内容
矩阵内的算法 发布:2025-09-18 20:55:07 浏览:569
android网络优化 发布:2025-09-18 20:53:19 浏览:216
看交换机配置哪些是默认的 发布:2025-09-18 20:46:59 浏览:617
在钉钉上如何获取自己的密码 发布:2025-09-18 20:46:12 浏览:853
pythonifthenelse 发布:2025-09-18 20:33:19 浏览:911
热血传奇脚本怎么做 发布:2025-09-18 20:29:06 浏览:609
轩逸手动经典有哪些配置 发布:2025-09-18 20:20:40 浏览:625
安卓手机下载软件在哪里设置密码 发布:2025-09-18 20:10:08 浏览:608
net业务缓存框架 发布:2025-09-18 19:57:14 浏览:16
pythonrst 发布:2025-09-18 19:28:50 浏览:415