当前位置:首页 » 编程软件 » 编译与链接有什么区别

编译与链接有什么区别

发布时间: 2022-06-20 09:37:49

Ⅰ 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一般存放的是函数的声明,类的定义等,系统不会编译,但是可以在头文件中点连接进行整个程序的编译连接过程。
连接后就可以运行了,也可以在没编译、连接时点运行,系统会自动编译、连接。

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

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

Ⅲ 请问c++问题 编译错误 与 链接错误有什么区别

编译错误是代码有错误;
链接错误是由于程序缺少必要的库文件,一般错误提示error LINK2001:无法解析的外部符号。

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

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

Ⅳ 动态链接,静态链接 动态编译,静态编译 动态链接库,静态链接库 这些两两间的区别是什么呢

有点儿乱……,分数少简单扼要的说说吧。
————————————
首先,传统的编译,也就是静态编译是把 源文件 翻译成目标文件,这个是一次性过程,也就是你所谓的静态编译。
后来的Java和.NET等语言,首先编译成中间形式,然后运行过程中根据需要编译成本地代码(注意这个过程不是一次性的,下次运行重新编译),这个就是JIT(即时编译)技术,从即时编译发展出了动态编译技术
————————————
(传统的)编译完成后,像C/C++、Fortran、汇编等语言,可以把多个目标文件合并到一个库文件中,这个就是静态库。比如常说的库函数printf就是libc里面的函数。
如果有了启动函数(main),main里面使用了printf,就可以通过静态链接技术,从libc中提取出printf所在的文件加入到可执行文件中,如果printf还需要其它函数,就继续搜索并加入列表,直到形成一个闭包。这个就是静态链接。
可是静态链接有个明显的缺点,如果每个程序都需要printf,那么printf这个函数的代码就会同时存在在每个程序中,这样也太占地方了吧。所以发明了动态连接技术,其实有两种形式。无论哪一种,都是首先记录下需要调用printf这个函数以及所在的动态库,等到运行的时候再加载动态库,从动态库中找到真正的printf去执行。
由于,动态链接技术需要一些额外的信息,传统的静态库是不具备的,这些额外信息主要是重复加载和卸载时所需要的一些代码,因此需要动态链接库。

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

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

Ⅶ 编译器跟编辑器有什么区别。还有什么是链接器

链接器(Linker)是一个程序,将一个或多个由编译器或汇编器生成的目标文件外加库链接为一个可执行文件。

是软体程序,一般是指用来修改电脑档案的编写软件,但也有人称 PE2、HE4(汉书)……等文书软件为编辑器。常见的编辑器有文本编辑器、网页编辑器、源程序编辑器、图像编辑器,声音编辑器,视频编辑器等。

简单讲,编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (executables)

Ⅷ 编译和链接的区别是什么

编译 源文件 -> 机器码
链接 机器码 -> 可执行文件

在GNU/Linux系统下:
编译: .c -> .o
链接: .o .o .o -> a.out

具体的可以看gcc的相关文档。

这个可以参考:
http://www.network-theory.co.uk/docs/gccintro/gccintro_82.html

Ⅸ 编译运行编译运行,有什么区别

编译:
包括编译和链接两个过程。
编译部分,是把源文件(代码)转换成机器可以识别的二进制语言,这个过程是针对每一个源文件的。
链接,是把编译生成的二进制文件,组合成为一个系统可以执行的可执行文件。
这两部分整体也叫编译。也就是说,广义的编译,就是把代码,转换成可执行文件。
运行:
把编译出来的可执行文件,在系统中运行的过程,称为程序的运行。
打个比方,编译就是做饭的过程,而运行,就是吃饭。二者是完全不同的概念,是计算机软件开发的两个步骤。

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

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

一、预编译

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

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

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

热点内容
电脑我的世界服务器游戏币 发布:2025-05-16 05:27:25 浏览:487
索尼手机为什么不能用安卓10 发布:2025-05-16 05:18:46 浏览:784
蔚来es6选择哪些配置实用 发布:2025-05-16 05:18:05 浏览:130
小米如何扫码wifi密码 发布:2025-05-16 05:13:38 浏览:807
楼层密码是什么意思 发布:2025-05-16 05:13:37 浏览:13
创建文件夹失败 发布:2025-05-16 05:12:59 浏览:396
电脑上如何查询自己的配置 发布:2025-05-16 05:06:36 浏览:105
sql中去重 发布:2025-05-16 04:55:06 浏览:893
dwr上传图片 发布:2025-05-16 04:49:46 浏览:122
base64加密的图片 发布:2025-05-16 04:35:46 浏览:356