⑴ 如何将编写好的C语言源程序变成可执行文件EXE
以GCC编译器为例,可以分为四步。
第一步是预处理,包括语法检查等工作。
gcc -P abc.c
第二步由源程序生产汇编语言代码。
gcc -S abc.c
会生成abc.s文件,这个文件里就是汇编代码。
第三步编译器生成目标代码,一个源文件生成一个目标代码。
gcc -c abc.c
会生成abc.o
第四步连接器从目标代码生成可执行文件。
gcc abc.o
目标代码包括机器码和符号表(函数及变量名)。连接器的主要作用是通过符号表在库文件和其他模块中找到在目标代码中引入或未定义的符号(函数及变量名),将几个目标代码合成可执行文件。
⑵ C语言编写好代码后,怎么编译,最后生成可执行文件
材料/工具:vc6.0
1、打开c语言编辑工具,在工具中写入程序的源代码。
⑶ 在C语言中,完成C源文件编辑后到生成执行文件的步骤是什么
在C语言中,完成C源文件编辑后到生成执行文件的步骤是:
预编译
处理有#标识的代码,如将include的文件进行拷贝、#define的条件编译等等!
编译
编译就是将第一阶段处理得到的文件通过词法语法分析等转换为汇编,对目标代码的生成进行的优化,翻译成机器指令。生成的文件叫目标文件。
链接
把目标文件和所需要的库,链接成为可执行文件。
⑷ C/C++程序编译步骤 如何生成可执行文件
1、预编译:展开宏,连接文件
2、编译各编译头生成目标文件
3、链接目标文件生成可执行文件
⑸ 简述将源程序编译成可执行程序的过程
一个源程序到一个可执行程序的过程:预编译、编译、汇编、链接。其中,编译是主要部分,其中又分为六个部分:词法分析、语法分析、语义分析、中间代码生成、目标代码生成和优化。
预编译:主要处理源代码文件中的以“#”开头的预编译指令。处理规则如下:
1、删除所有的#define,展开所有的宏定义。
2、处理所有的条件预编译指令,如“#if”、“#endif”、“#ifdef”、“#elif”和“#else”。
3、处理“#include”预编译指令,将文件内容替换到它的位置,这个过程是递归进行的,文件中包含其他文件。
4、删除所有的注释,“//”和“/**/”。
5、保留所有的#pragma 编译器指令,编译器需要用到他们,如:#pragma once 是为了防止有文件被重复引用。
6、添加行号和文件标识,便于编译时编译器产生调试用的行号信息,和编译时产生编译错误或警告是能够显示行号。
(5)编译生成可执行文件由什么完成扩展阅读:
编译过程中语法分析器只是完成了对表达式语法层面的分析,语义分析器则对表达式是否有意义进行判断,其分析的语义是静态语义——在编译期能分期的语义,相对应的动态语义是在运行期才能确定的语义。
其中,静态语义通常包括:声明和类型的匹配,类型的转换,那么语义分析就会对这些方面进行检查,例如将一个int型赋值给int*型时,语义分析程序会发现这个类型不匹配,编译器就会报错。
⑹ 如何生成可执行文件,以及如何运行它
1、打开c语言编辑工具(vc6.0),写入所编程序源代码;
⑺ 用c语言编写的源程序需要用编译程序先编译成由机器语言组成的目标程序,在经过( )后才能得到可执行程序
源代码需经过编译和链接,才可生成可执行文件。
由汇编程序生成的目标文件并不能立即就被执行,其中可能还有许多没有解决的问题。 例如,某个源文件中的函数可能引用了另一个源文件中定义的某个符号(如变量或者函数调用等);在程序中可能调用了某个库文件中的函数,等等。所有的这些问题,都需要经链接程序的处理方能得以解决。
链接程序的主要工作就是将有关的目标文件彼此相连接,也即将在一个文件中引用的符号同该符号在另外一个文件中的定义连接起来,使得所有的这些目标文件成为一个能够诶操作系统装入执行的统一整体。
根据开发人员指定的同库函数的链接方式的不同,链接处理可分为两种:
(1)静态链接
在这种链接方式下,函数的代码将从其所在地静态链接库中被拷贝到最终的可执行程序中。这样该程序在被执行时这些代码将被装入到该进程的虚拟地址空间中。静态链接库实际上是一个目标文件的集合,其中的每个文件含有库中的一个或者一组相关函数的代码。
(2) 动态链接
在此种方式下,函数的代码被放到称作是动态链接库或共享对象的某个目标文件中。链接程序此时所作的只是在最终的可执行程序中记录下共享对象的名字以及其它少量的登记信息。在此可执行文件被执行时,动态链接库的全部内容将被映射到运行时相应进程的虚地址空间。动态链接程序将根据可执行程序中记录的信息找到相应的函数代码。
对于可执行文件中的函数调用,可分别采用动态链接或静态链接的方法。使用动态链接能够使最终的可执行文件比较短小,并且当共享对象被多个进程使用时能节约一些内存,因为在内存中只需要保存一份此共享对象的代码。但并不是使用动态链接就一定比使用静态链接要优越。在某些情况下动态链接可能带来一些性能上损害。
⑻ 一个源程序(.c)变成可执行(.exe)文件要经过几个步骤详细一点
以GCC编译器为例,可以分为四步。
第一步是预处理,包括语法检查等工作。
gcc
-P
abc.c
第二步由源程序生产汇编语言代码。
gcc
-S
abc.c
会生成abc.s文件,这个文件里就是汇编代码。
第三步编译器生成目标代码,一个源文件生成一个目标代码。
gcc
-c
abc.c
会生成abc.o
第四步连接器从目标代码生成可执行文件。
目标代码包括机器码和符号表(函数及变量名)。连接器的主要作用是通过符号表在库文件和其他模块中找到在目标代码中引入或未定义的符号(函数及变量名),将几个目标代码合成可执行文件。
⑼ c语言可执行程序文件是通过()和()生成的
源程序文件不是可执行文件。 C源程序文件是一种文本文件,它首先需要编译器去编译成目标文件,在通过链接器链接库代码才能形成可执行的二进制exe文件。每一个C语言程序必须要经过编译和链接才能被计算机执行,编译是将C源码翻译成机器码,链接是将将二进制目标文件装配成一个具有特定格式的二进制可执行文件,比如Windows平台上是PE格式,一般以.exe为扩展名。 一个C语言程序从源码到计算机系统可以执行,更细致的划分为:预处理——编译——汇编——链接。预处理是对C语言源码进行文本处理,编译阶断是将C源码经C编译器生成汇编代码,汇编阶断是将汇编代码经汇编器生成二进制机器码文件。这两个合拢起来,笼统的可以叫做编译阶断。语言是一门计算机语言,有自己一定的语法。但是,C语言并不能直接被对象所理解,需要将C语言转变成可执行代码,即二进制代码。在C语言转变成二进制可执行代码时,是以工程为单位的。而一个工程中往往会包含多个C文件。因此,需要将每个C文件都编译成二进制代码。此时,每个C文件所对应的二进制代码是独立的。由于工程是一个系统,所以需要将所有的C文件二进制代码链接到一起,形成一个工程的可执行文件。 综上,编译和链接就是指的将C文件转变成二进制代码,并将各个独立的C文件二进制代码链接到一起,形成一个可执行文件的过程。
⑽ c语言编译流程(c语言是如何变成可执行文件的)
1.预编译,把源代码中的宏展开并把包含的文件的源代码插入程序的源代码中.
2.编译,把源代码编译成二进制的目标文件.但是此时目标文件还是不可执行的.
3.汇编,这一步主要是处理源代码中的汇编代码
4.连接,把目标代码和二进制的库文件以及其它内容合并成最终的可执行文件.