在c语言中“可执行程序”是什么意思?

   更新日期:2024.05.23

C语言中的可执行程序就是将用文本信息表示的程序翻译成计算机认识的二进制代码串。

首先,我们先用C语言把源代码写好,然后交给C语言编译器。C语言编译器内部分为前端和后端。

(1)编译器前端

前端负责将C语言代码进行词法和语法上的解析,然后可以生成中间代码。

中间代码这部分不是必须的,但是它能够为程序的跨平台移植带来诸多好处。比如,同样的一份C语言源代码在一台计算机上编译完之后,生成一套中间代码。

然后针对不同的目标平台(比如要将这一套代码分别编译成 ARM 处理器的二进制机器码、MIPS 处理器的二进制机器码以及 x86 处理器的二进制机器码),只需要编写相应目标平台的编译器后端即可。

所以,这么做就可以把编译器的前端与后端剥离开来(这在软件工程上又可称为解耦合),不同处理器厂商可以针对自家的处理器特性,对中间代码生成到目标二进制代码的过程再度进行优化。

(2)编译器后端

接下来,由C语言编译器后端生成源文件相应的目标文件。

目标文件在 Windows 系统上往往是.obj文件,而在 Unix/Linux 系统上往往是.o文件,C语言的源文件在所有平台上都统一用.c文件表示。

(3)链接器

最后,对于各个独立的目标文件,通过连接器将它们合并成一个最终可执行文件。

扩展资料:

起初,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语言



编写的代码经过编译和连接转为可执行文件的过程。

对于可执行文件中的函数调用,可分别采用动态链接或静态链接的方法。使用动态链接能够使最终的可执行文件比较短小,并且当共享对象被多个进程使用时能节约一些内存,因为在内存中只需要保存一份此共享对象的代码。

但并不是使用动态链接就一定比使用静态链接要优越。在某些情况下动态链接可能带来一些性能上损害。

源代码-->预处理-->编译-->优化-->汇编-->链接-->可执行文件

扩展资料:

(1)静态链接 在这种链接方式下,函数的代码将从其所在地静态链接库中被拷贝到最终的可执行程序中。这样该程序在被执行时这些代码将被装入到该进程的虚拟地址空间中。

静态链接库实际上是一个目标文件的集合,其中的每个文件含有库中的一个或者一组相关函数的代码。(个人备注:静态链接将链接库的代码复制到可执行程序中,使得可执行程序体积变大)

(2)动态链接  在此种方式下,函数的代码被放到称作是动态链接库或共享对象的某个目标文件中。链接程序此时所作的只是在最终的可执行程序中记录下共享对象的名字以及其它少量的登记信息。

在此可执行文件被执行时,动态链接库的全部内容将被映射到运行时相应进程的虚地址空间。动态链接程序将根据可执行程序中记录的信息找到相应的函数代码。

(个人备注:动态链接指的是需要链接的代码放到一个共享对象中,共享对象映射到进程虚地址空间,链接程序记录可执行程序将来需要用的代码信息,根据这些信息迅速定位相应的代码片段。)



C语言中的可执行程序就是将用文本信息表示的程序翻译成计算机认识的二进制代码串。

首先,我们先用C语言把源代码写好,然后交给C语言编译器。C语言编译器内部分为前端和后端。

(1)编译器前端

前端负责将C语言代码进行词法和语法上的解析,然后可以生成中间代码。

中间代码这部分不是必须的,但是它能够为程序的跨平台移植带来诸多好处。比如,同样的一份C语言源代码在一台计算机上编译完之后,生成一套中间代码。

然后针对不同的目标平台(比如要将这一套代码分别编译成 ARM 处理器的二进制机器码、MIPS 处理器的二进制机器码以及 x86 处理器的二进制机器码),只需要编写相应目标平台的编译器后端即可。

所以,这么做就可以把编译器的前端与后端剥离开来(这在软件工程上又可称为解耦合),不同处理器厂商可以针对自家的处理器特性,对中间代码生成到目标二进制代码的过程再度进行优化。

(2)编译器后端

接下来,由C语言编译器后端生成源文件相应的目标文件。

目标文件在 Windows 系统上往往是.obj文件,而在 Unix/Linux 系统上往往是.o文件,C语言的源文件在所有平台上都统一用.c文件表示。

(3)链接器

最后,对于各个独立的目标文件,通过连接器将它们合并成一个最终可执行文件。

扩展资料:

文本信息到可执行程序

不论是.c, .cpp 还是.h文件,所有的这些我们称之为程序的东西都是文本信息。他们都无法被计算机认识。计算机只认识0和1.所以要让计算机执行我们用文本信息表示的程序,必须将这些文本信息表示的程序翻译成计算机认识的01代码串。

在C语言中,通常我们使用gcc来生成可执行程序,命令为:gcc hello.c,默认生成可执行文件a.out。

其实编译(包括链接)的命令:gcc hello.c 可分解为如下4个大的步骤:

1、预处理(Preprocessing)

2、编译(Compilation)

3、汇编(Assembly)

4、链接(Linking)

参考资料来源:百度百科-C语言

参考资料来源:百度百科-可执行程序



C语言中的可执行程序就是已经经过编译和连接转

化成了二进制代码了,计算机能识别

当用户直接双击(其实就是发出命令给操作系统,由操作系统来响应)之

后,操作系统会调用main函数开始执行,WINDOWS是以.EXE作为扩展名的

表示是可执行文件

  • 13895036542 :可执行程序是指什么
    贺章贫2707 :答:问题二:在c语言中“可执行程序”是什么意思? C语言中的可执行程序就是已经经过编译和连接转 化成了二进制代码了,计算机能识别 当用户直接双击(其实就是发出命令给操作系统,由操作系统来响应)之 后,操作系统会调用main函数开始执行,WINDOWS是以.EXE作为扩展名的 表示是可执行文件 问题三:可执行文件...
  • 13895036542 :C语言能直接执行的程序是
    贺章贫2707 :答:编译链接后的二进制文件,可执行程序, .exe文件。
  • 13895036542 :c语言可执行文件的后缀名是什么
    贺章贫2707 :答:c语言可执行文件的后缀名是exe。可执行程序:目标程序与库函数连接,形成的完整的可在操作系统下独立执行的程序称为可执行程序。可执行程序的扩展名为“.exe“。
  • 13895036542 :可执行语句和非可执行语句在程序中的位置是怎样的?
    贺章贫2707 :答:可执行语句是:可以通过编译产生对应的汇编代码和机器码的语句。 2. C语言中的可执行程序就是已经经过编译和连接转化成了二进制代码,计算机能识别当用户直接双击(其实就是发出命令给操作系统,由操作系统来响应)之后,操作系统会调用main函数开始执行,WINDOWS是以.EXE作为扩展名的表示是可执行文件. 3. 比如...
  • 13895036542 :c语言计算机能直接执行的程序是
    贺章贫2707 :答:D啊 老大!!!~~~源程序->编译成目标文件->经过连接生成EXE文件,被操作系统以PE的格式载入。
  • 13895036542 :C语言的可执行程序是由一系列机器指令构成的
    贺章贫2707 :答:A)C语言的可执行程序是由一系列机器指令构成的 B)用C语言编写的源程序不能直接在计算机上运行 C)通过编译得到的二进制目标程序需要连接才可以运行 D)在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件 【解析】C程序开发过程:编辑—>(.c)编译—>(.obj)链接—>可执行文件(....
  • 13895036542 :C语言源程序文件、目标文件和可执行文件的扩展名是什么?
    贺章贫2707 :答:源程序:程序可以用高级语言或汇编语言编写,用高级语言或汇编语言编写的程序称为源程序。C语言源程序的扩展名为“.c”。源程序不能直接在计算机上执行,需要用“编译程序”将源程序编译为二进制形式的代码。目标程序:源程序经过“编译程序”编译所得到的二进制代码称为目标程序。目标程序的扩展名为“...
  • 13895036542 :c语言源程序文件,目标文件,和可执行文件的扩展名是什么
    贺章贫2707 :答:C++的源程序则是cpp。2、目标文件。目标文件是源程序经过编译生成的文件,平台不同,编译工具不同生成的目标文件扩展名也不同。 在windows上比较常见的为obj, 在Linux下比较常见的为o。另外还有一些比较少见的扩展名,如oo, tco等。3、可执行文件。可执行文件是目标文件经过链接后,产生的用于运行的...
  • 13895036542 :什么是C语言程序?它是什么样的程序?
    贺章贫2707 :答:C语言写的代码程序肯定是源程序,B是对的,它不能立即执行,必须经过编译成可执行代码,所以A是错误的;如果这个源程序中不含有main函数,编译后的代码也是不可执行的,所以C是错误的;C语言不是解释执行的,D也不正确。
  • 13895036542 :c语言如何把c程序编译成可执行的exe文件
    贺章贫2707 :答:该文件夹内有一个名为【Debug】的文件夹,exe可执行程序就在此文件夹内。5、但是exe可执行程序运行结束后会自动闪退,无法查看运行结果;这时需要在程序末尾加上停顿语句:getchar();并重新运行C语言代码。6、再次打开【Debug】文件夹内的exe可执行程序,未出现闪退,可清晰查看到程序运行结果。
  • 相关链接

    欢迎反馈与建议,请联系电邮
    2024 © 视觉网