当前位置:首页 » 编程软件 » 编译链接基本结构

编译链接基本结构

发布时间: 2022-03-01 18:53:11

‘壹’ c语言 四个过程:预处理,编译,汇编,链接,分别进行了什么过程别度娘。

预处理:替换代码中的预处理命令(宏定义就是在这里直接替换的)
编译:对代码按执行顺序进行编译成.o或.obj目标文件
汇编:将其他高级语言转换成机器语言
链接:代码中的各种调用关系重定位

‘贰’ 程序的编译链接过程

stdio.h 只是一个函数声明的头文件, 实现在已经编译好的库文件中,一般情况 IDE 会自动连接标准库,不需要你管。

‘叁’ 计算机组成编译和链接的作用

操作系统原理就是讲操作系统的,比如怎么管理内存,怎么管理文件,怎么管理进程。
计算机组成原理讲的是计算机硬件各部分的组成与协作,比如怎么取址,内存怎么构成,磁盘的磁臂磁道之类的。
编译原理,讲的是怎么将高级语言(比如c,java)翻译成机器语言的过程与技术。

‘肆’ 多个源文件的编译和链接

这个问题我也曾经遇到过,后来过了好久才弄懂。这个一般是把程序分在.h文件和.c文件,在.h文件中给出函数声明定义基本的数据结构,在.c文件中实现相应的.h文件中的函数。然后要使用相应的接口或函数就包含.h文件,就是#include 相应的.h 文件。在编译生成的时候编译器会根据项目的makefile 来编译生成。如果想比较清楚的了解,可以看看linux 下的make工具和makefile ,make 就是根据makefile 来编译生成项目。vc++6.0底层的过程也类似,但是被界面屏蔽了。

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

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

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

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

一、预编译

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

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

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

‘柒’ 汇编语言的那个编译链接 的详细过程 每一步骤

16位汇编:安装MASM5.0编译器,假设将编译器MASM5.0文件放在c:\下,在DOS下进入c
:\MASM5.0目录下,输入命令masm,回车,出现"【.ASM】"会提示输入源文件所在文件目录及以.asm为后缀的文件名,回车,出现"【.obj】"会提示输入目标文件名,然后回车直到结束。
然后输入link命令,出现【.obj】会提示输入目标文件,回车,会出现"【.exe】"提示输入可执行文件,回车知道结束。然后输入可执行文件名,就可以运行程序了。

‘捌’ 程序编译连接的过程中各干了什么事情

呵呵,楼主应该看看《编译原理》。

我的空间里的一篇日志或许对楼主也有帮助。

链接是把程序代码与所需要的其他目标代码,或函数库,Run-time 库连接在一起。

比如 printf,程序代码里没有它内部实现的代码,只是说要调用这个功能。
连接程序会把它内部实现代码从 Run-time 库里提出来,放在一起,这样程序才可以单独执行。

对于使用了第三方函数库的代码来说,链接程序同样会在第三方函数库中提取相关内容,加在一个可执行文件(Exe 或其他)中。

另外,一些比较大的程序,可能会分若干个文件,它们互相调用彼此的函数。可以独立编译成若干个目标代码。如果这些函数有的缺失了,编译也可以通过。
这样做的好处是,对于大型程序,分成若干部分分别编译,加快了编译过程。同时,减少每个源码文件的行数。
比如,写一个计算程序。后台计算有一个文件,可以编译成功。前台界面有一个文件,也可以编译成功。它们分辨编译成两个不同的目标代码文件(obj 或其他)

然后经过链接过程
这个例子的话,可以认为有这个式子:
前台.obj + 后台.obj + .... + 第三方函数库 + Run-time 库 = Exe

链接的时候,才会检查这种相互依赖是否完整。
比如前台部分是否使用了有些函数,而这些函数在后台处理模块中并不存在?或者忘记写这个函数了?
或者是否调用了一个后台函数,而这个函数的参数与调用的时候根本不一致?
发生这些情况时,才会给出链接警告和错误。

‘玖’ 编译程序包括哪几个主要组成部分

数据结构 分析和综合时所用的主要数据结构,包括符号表、常数表和中间语言程序。符号表由源程序中所用的标识符连同它们的属性组成,其中属性包括种类(如变量、数组、结构、函数、过程等)、类型(如整型、实型、字符串、复型、标号等),以及目标程序所需的其他信息。常数表由源程序中用的常数组成,其中包括常数的机内表示,以及分配给它们的目标程序地址。中间语言程序是将源程序翻译为目标程序前引入的一种中间形式的程序,其表示形式的选择取决于编译程序以后如何使用和加工它。常用的中间语言形式有波兰表示、三元组、四元组以及间接三元组等。
分析部分 源程序的分析是经过词法分析、语法分析和语义分析三个步骤实现的。词法分析由词法分析程序(又称为扫描程序)完成,其任务是识别单词(即标识符、常数、保留字,以及各种运算符、标点符号等)、造符号表和常数表,以及将源程序换码为编译程序易于分析和加工的内部形式。语法分析程序是编译程序的核心部分,其主要任务是根据语言的语法规则,检查源程序是否合乎语法。如不合乎语法,则输出语法出错信息;如合乎语法,则分解源程序的语法结构,构造中间语言形式的内部程序。语法分析的目的是掌握单词是怎样组成语句的,以及语句又是如何组成程序的。语义分析程序是进一步检查合法程序结构的语义正确性,其目的是保证标识符和常数的正确使用,把必要的信息收集和保存到符号表或中间语言程序中,并进行相应的语义处理。

‘拾’ 编译和链接的区别是什么

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

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

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

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

热点内容
c语言单元测验 发布:2025-01-19 07:58:56 浏览:990
c语言贪吃蛇源代码 发布:2025-01-19 07:58:53 浏览:879
c语言char数组长度 发布:2025-01-19 07:46:23 浏览:10
淘宝如何清理缓存垃圾 发布:2025-01-19 07:42:07 浏览:438
电脑输入密码阶段如何改语言 发布:2025-01-19 07:42:05 浏览:786
存储器国产率 发布:2025-01-19 07:04:36 浏览:567
锐程cc蓝鲸版选什么配置 发布:2025-01-19 06:56:28 浏览:169
城镇居民医保卡的原始密码是多少 发布:2025-01-19 06:55:54 浏览:788
wifi密码如何修改密码 发布:2025-01-19 06:39:06 浏览:962
sqlserver认证 发布:2025-01-19 06:34:30 浏览:815