1. c语言可执行程序文件是通过()和()生成的
源程序文件不是可执行文件。 C源程序文件是一种文本文件,它首先需要编译器去编译成目标文件,在通过链接器链接库代码才能形成可执行的二进制exe文件。每一个C语言程序必须要经过编译和链接才能被计算机执行,编译是将C源码翻译成机器码,链接是将将二进制目标文件装配成一个具有特定格式的二进制可执行文件,比如Windows平台上是PE格式,一般以.exe为扩展名。 一个C语言程序从源码到计算机系统可以执行,更细致的划分为:预处理——编译——汇编——链接。预处理是对C语言源码进行文本处理,编译阶断是将C源码经C编译器生成汇编代码,汇编阶断是将汇编代码经汇编器生成二进制机器码文件。这两个合拢起来,笼统的可以叫做编译阶断。语言是一门计算机语言,有自己一定的语法。但是,C语言并不能直接被对象所理解,需要将C语言转变成可执行代码,即二进制代码。在C语言转变成二进制可执行代码时,是以工程为单位的。而一个工程中往往会包含多个C文件。因此,需要将每个C文件都编译成二进制代码。此时,每个C文件所对应的二进制代码是独立的。由于工程是一个系统,所以需要将所有的C文件二进制代码链接到一起,形成一个工程的可执行文件。 综上,编译和链接就是指的将C文件转变成二进制代码,并将各个独立的C文件二进制代码链接到一起,形成一个可执行文件的过程。
2. 在c语言中“可执行程序”是什么意思
C语言中的可执行程序就是将用文本信息表示的程序翻译成计算机认识的二进制代码串。
首先,我们先用C语言把源代码写好,然后交给C语言编译器。C语言编译器内部分为前端和后端。
(1)编译器前端
前端负责将C语言代码进行词法和语法上的解析,然后可以生成中间代码。
中间代码这部分不是必须的,但是它能够为程序的跨平台移植带来诸多好处。比如,同样的一份C语言源代码在一台计算机上编译完之后,生成一套中间代码。
然后针对不同的目标平台(比如要将这一套代码分别编译成 ARM 处理器的二进制机器码、MIPS 处理器的二进制机器码以及 x86 处理器的二进制机器码),只需要编写相应目标平台的编译器后端即可。
所以,这么做就可以把编译器的前端与后端剥离开来(这在软件工程上又可称为解耦合),不同处理器厂商可以针对自家的处理器特性,对中间代码生成到目标二进制代码的过程再度进行优化。
(2)编译器后端
接下来,由C语言编译器后端生成源文件相应的目标文件。
目标文件在 Windows 系统上往往是.obj文件,而在 Unix/Linux 系统上往往是.o文件,C语言的源文件在所有平台上都统一用.c文件表示。
(3)链接器
最后,对于各个独立的目标文件,通过连接器将它们合并成一个最终可执行文件。
(2)可执行程序是什么生成的文件扩展阅读:
起初,C语言没有官方标准。1978年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。布莱恩·柯林汉(Brian Kernighan) 和 丹尼斯·里奇(Dennis Ritchie) 出版了一本书,名叫《The C Programming Language》。
这本书被 C语言开发者们称为K&R,很多年来被当作 C语言的非正式的标准说明。人们称这个版本的 C语言为K&R C。
K&R C主要介绍了以下特色:
结构体(struct)类型
长整数(long int)类型
无符号整数(unsigned int)类型
把运算符=+和=-改为+=和-=。因为=+和=-会使得编译器不知道使用者要处理i = -10还是i =- 10,使得处理上产生混淆。
即使在后来ANSI C标准被提出的许多年后,K&R C仍然是许多编译器的最 准要求,许多老旧的编译器仍然运行K&R C的标准。
1970到80年代,C语言被广泛应用,从大型主机到小型微机,也衍生了C语言的很多不同版本。
1983年,美国国家标准协会(ANSI)成立了一个委员会X3J11,来制定 C语言标准。
1989年,美国国家标准协会(ANSI)通过了C语言标准,被称为ANSI X3.159-1989 "Programming Language C"。因为这个标准是1989年通过的,所以一般简称C89标准。有些人也简称ANSI C,因为这个标准是美国国家标准协会(ANSI)发布的。
1990年,国际标准化组织(ISO)和国际电工委员会(IEC)把C89标准定为C语言的国际标准,命名为ISO/IEC 9899:1990 - Programming languages -- C 。因为此标准是在1990年发布的,所以有些人把简称作C90标准。不过大多数人依然称之为C89标准,因为此标准与ANSI C89标准完全等同。
1994年,国际标准化组织(ISO)和国际电工委员会(IEC)发布了C89标准修订版,名叫ISO/IEC 9899:1990/Cor 1:1994 ,有些人简称为C94标准。
1995年,国际标准化组织(ISO)和国际电工委员会(IEC)再次发布了C89标准修订版,名叫ISO/IEC 9899:1990/Amd 1:1995 - C Integrity ,有些人简称为C95标准。
C99标准
1999年1月,国际标准化组织(ISO)和国际电工委员会(IEC)发布了C语言的新标准,名叫ISO/IEC 9899:1999 - Programming languages -- C ,简称C99标准。这是C语言的第二个官方标准。
参考资料:网络-c语言
3. 什么是可执行文件
可执行文件 (executable file) 指的是可以由操作系统进行加载执行的文件。在不同的操作系统环境下,可执行程序的呈现方式不一样。在windows操作系统下,可执行程序可以是 .exe文件 .sys文件 .com类型文件。
如记事本程序notepad.exe ,这类程序通常用来处理或者辅助处理其它文件。比如:myfile.txt双击打开由notepad.exe记事本程序来进行编辑。
(3)可执行程序是什么生成的文件扩展阅读:
可执行文件常见分类:
1、Linux32/64位可执行文件:Linux是靠文件属性来判断判断是否可执行。每个文件专门有个属性来表示文件是否可执行。
2、MS-DOS可执行文件:最简单的可执行文件格式,可以在MS-DOS和32位的WINDOWS中运行。它通过在文件头添加ASCII字符串“MZ”(16进制中表示为4D5A)来标识。“
3、16位NE X86可执行文件:通过在文件头添加ASCII字符串“NE”来标识。它只能运行在Windows和OS/2系统,而不能在DOS下运行。
4、16/32位X86可执行文件:通过在文件头添加ASCII字符串“LE”来标识。它仅用来在Windows 3.x和Windows 9x中替代VxD驱动。
5、32位线性可执行文件:通过在文件头添加ASCII字符串“LX”来标识。运行在OS/2 2.0以及更高版本中,也可用于某些DOS扩展。
6、32位X86可执行文件:这是最复杂也最流行的可执行文件格式,通过在文件头添加ASCII字符串“PE”来标识。它主要运行于Windows 95和Windows NT以及更高版本的Windows中,也可在BeOS R3中运行。
7、64位X86-64可执行文件:与32位文件类似,但使用支持64位的X86cpu(64根地址总线)。因此它仅能在64位的Windows系统中运行,譬如Windows 7 64位和 Windows10 X64。
参考资料来源:网络-可执行文件
参考资料来源:网络-可执行程序
4. 简述将源程序编译成可执行程序的过程
一个源程序到一个可执行程序的过程:预编译、编译、汇编、链接。其中,编译是主要部分,其中又分为六个部分:词法分析、语法分析、语义分析、中间代码生成、目标代码生成和优化。
预编译:主要处理源代码文件中的以“#”开头的预编译指令。处理规则如下:
1、删除所有的#define,展开所有的宏定义。
2、处理所有的条件预编译指令,如“#if”、“#endif”、“#ifdef”、“#elif”和“#else”。
3、处理“#include”预编译指令,将文件内容替换到它的位置,这个过程是递归进行的,文件中包含其他文件。
4、删除所有的注释,“//”和“/**/”。
5、保留所有的#pragma 编译器指令,编译器需要用到他们,如:#pragma once 是为了防止有文件被重复引用。
6、添加行号和文件标识,便于编译时编译器产生调试用的行号信息,和编译时产生编译错误或警告是能够显示行号。
(4)可执行程序是什么生成的文件扩展阅读:
编译过程中语法分析器只是完成了对表达式语法层面的分析,语义分析器则对表达式是否有意义进行判断,其分析的语义是静态语义——在编译期能分期的语义,相对应的动态语义是在运行期才能确定的语义。
其中,静态语义通常包括:声明和类型的匹配,类型的转换,那么语义分析就会对这些方面进行检查,例如将一个int型赋值给int*型时,语义分析程序会发现这个类型不匹配,编译器就会报错。
5. 什么叫做可执行程序
可执行文件 (executable file) 指的是可以由操作系统进行加载执行的文件,以windows系统为例进行说明。
1、用户在安装windows系统电脑上使用的qq、ie浏览器、记事本、office等等 ,这些都是可执行文件,用户可以简单将可执行文件理解为电脑上的程序。
2、在windows系统上一般来说exe文件都是可执行文件,但是可执行文件还包括了dll文件、scr文件等 ,总之,可执行文件是一种满足一定文件格式的可执行体,在windows系统上叫做PE格式 ,下图是windows系统上可执行文件的格式,包括了DOS头、PE头、区段等信息。
6. exe是什么文件
EXE是在OS/2、MS-DOS和Windows系统中通用的可执行文件的扩展名。exe文件比较复杂,属于一种多段的结构,是DOS最成功和复杂的设计之一。
EXE File 可执行程序 一种可在操作系统存储空间中浮动定位的可执行程序。MS-DOS和MS-WINDOWS下,此类文件扩展名为·exe。exe用以标识可执行文件的文件扩展名。用户在提示行中输入不带 .exe扩展名的文件名后按 Enter 键就能运行可执行程序。
(6)可执行程序是什么生成的文件扩展阅读
EXE 包括以下几种主要的文件格式:
1、DOS可执行文件:最简单的可执行文件格式,可以在DOS和Windows中运行。它通过在文件头添加ASCII字符串“MZ”(16进制中表示为4D5A)来标识。“MZ”是MS-DOS开发者之一的马克·茨柏克沃斯基(Mark Zbikowski)的姓名首字母缩写。
2、16位新可执行文件:通过在文件头添加ASCII字符串“NE”来标识。它只能运行在Windows和OS/2系统,而不能在DOS下运行。
3、16/32位混合式线性可执行文件:通过在文件头添加ASCII字符串“LE”来标识。它仅用来在Windows 3.x和Windows 9x中替代VxD驱动。
7. 什么方式会生成目标程序和可执行程序
经过编译和链接,才可生成可执行文件。
一般的顺序是这样的:预编译,编译,汇编,链接!没有链接这步是无法生成可执行文件的!由汇编程序生成的目标文件并不能立即就被执行,其中可能还有许多没有解决的问题。