`

C中目标代码文件,可执行文件和库

 
阅读更多

      C编程的基本策略是使用程序将源代码文件转换为可执行文件,此文件包含可运行的机器语言代码。 C分两步完成这一工作:编译和链接。编译器将源代码转换为中间代码,连接器将此中间代码与其他代码相结合来生成可执行文件。C使用编译和链接生成可执行文件的方法便于程序的模块化。您可以分别编译各个模块,然后使用连接器将编译过的模块结合起来。这样,如果需要改变一个模块,则不必重新编译所有其他模块。同时,连接器将程序与预编译的库代码结合起来。

      中间文件的形式有多种选择。最一般的选择,是将源代码转换为机器语言代码,将结果放置在目标代码文件中。虽然目标文件包含机器语言代码,但该文件还不能运行。目标文件包含源代码的转换结果,但还不是一个完整的程序。

      目标代码文件中能够缺少的一个元素是一种叫做启动代码(start-up code)的东西,此代码相当于您程序和操作系统之间的接口。例如:可以在DOS或linux下运行一个IBM PC兼容机,在这两种情况中硬件是相同的,若以都会使用相同的目标代码,但是DOS与Linux要使用不同的启动代码,因为这两种系统处理程序的方式不同。

      目标代码文件所缺少的第二个元素是库例程的代码。几乎所用C程序都利用标准C库中所包含的例程(称为函数)。例如有的程序中的printf()函数,目标代码文件不包含这一函数代码,他只包含声明使用printf()函数的指令,实际代码存储在另一个称为“库”的文件中。库文件中包含许多函数的目标代码。

      链接器的作用是将目标代码,系统的标注启动代码和库代码结合在一起,并将它们存放在单个文件,即可执行文件中。对库代码来说,连接器中从库中提取程序使用的函数的代码。

      简而言之,目标文件和可执行文件都是有机器语言指令组成的。但目标文件之包含您所编写的代码转换成的机器语言,而可执行文件还包含您所使用你哦个的库函数已经启动代码的机器代码。

 

 

 

 

2
1
分享到:
评论

相关推荐

    python 代码生成可执行文件

    总的来说,通过PyInstaller这样的工具,Python开发者可以轻松地将源代码转化为可执行文件,从而方便地分享和部署他们的程序,而无需依赖Python环境。然而,为了确保程序的稳定性和兼容性,需要对打包过程和相关技术...

    C语言函数库 C语言函数库和文件(完).doc

    函数库分为静态库和动态库,静态库在编译时会被合并到目标代码中,而动态库在运行时被加载。 关于程序文件的大小,C语言允许分别编译,理想的文件规模通常不宜超过10000个字节,以减少编译时间。对于大型项目,文件...

    MAKEFILE(静态库,动态库,可执行文件)模板

    在这个`MAKEFILE(静态库,动态库,可执行文件)模板`中,我们将深入探讨如何使用 `Makefile` 来管理静态库、动态库和可执行文件的构建。 首先,我们要理解`Makefile`的基本结构。`Makefile`通常由一系列规则组成,...

    C语言:详解C语言中的lib文件

    2. **减小程序体积**:通过只链接实际需要的部分,可以显著减小程序最终生成的可执行文件大小,有利于资源的有效利用。 3. **增强代码可读性与可维护性**:将通用函数独立存储,有助于提升代码的整体结构清晰度,...

    文件系统实验,c语言代码,filesystem

    4. **FILE SYSTEM.exe**:这是一个可执行文件,可能是实验代码编译后的结果。运行这个文件可以实际体验到文件系统功能的实现,验证代码的正确性。 5. **IO_System.h**:这是C语言的头文件,通常包含函数声明和常量...

    c语言程序小型文件管理系统源代码

    "ZONGHE~1.EXE"可能代表编译后的可执行文件,它是源代码经过编译器转换后生成的,可以直接在操作系统上运行。而"ZONGHE~1.OBJ"则是编译过程中产生的目标文件,包含了编译器处理源代码后的机器码,但还未完成链接过程...

    SPT-C语言基础-编写自己的库文件.pdf

    编译阶段,每个源文件会被独立编译成目标文件(.obj),而链接阶段则是将所有目标文件合并成一个可执行文件(.exe)。如果库文件中包含了所需函数和变量的定义,链接器会在库文件中查找并解决符号引用,使得程序能够...

    C 语言编写的图形界面源代码和可执行文件(1)

    在本资源中,我们主要关注的是使用C语言创建图形用户界面(GUI)的源代码和可执行文件。C语言本身并不直接支持GUI编程,但通过一些库和工具,我们可以实现这个目标。以下是一些关于C语言和图形界面开发的关键知识点...

    bin文件转换为C文件转换工具

    这样,当C程序编译时,这些数据会被直接包含在生成的可执行文件中。这种方法常用于嵌入式系统开发,因为它们往往没有独立的文件系统来加载外部的二进制文件。 转换过程一般涉及以下步骤: 1. **读取二进制文件**:...

    C、C++程序编译步骤以及如何生成可执行文件

    通过上述介绍可以看出,C/C++程序从源代码到可执行文件的过程中涉及多个步骤,每个步骤都有其独特的作用。预处理简化了源代码的编写,编译器确保了源代码的正确性并将其转换为机器语言,优化提高了程序性能,而链接...

    android JNI运行NDK编译成的可执行文件

    JNI的使用通常涉及到Android NDK(Native Development Kit),这是一个用于构建原生库的工具集,可以将C/C++代码编译为可执行文件或静态/动态库,供Android应用调用。在本主题中,我们将深入探讨如何在Android环境中...

    最小二乘法曲线拟合C语言可执行代码

    6. **测试和调试**:对生成的可执行文件进行测试,确保它能正确处理不同数据集并返回预期的拟合结果。 7. **优化和扩展**:根据需要优化代码性能,或者扩展功能,比如添加图形界面显示拟合结果,或者支持更复杂的...

    用keil4封装lib库文件的方法

    1. **编写源代码**:首先,你需要编写包含你需要封装的功能的C源代码文件。这些文件应该遵循良好的编程规范,包括但不限于清晰的注释、适当的函数命名和模块化设计。 2. **创建工程**:在Keil4中新建一个工程,并将...

    打字游戏,C语言工程,内含源代码和可执行程序

    9. **可执行程序**:在项目中包含的可执行程序意味着开发者已经成功编译了源代码,并生成了一个可以直接运行的二进制文件。这通常使用编译器如GCC完成。 总的来说,这个C语言打字游戏项目结合了输入/输出、字符串...

    VC++生成可执行文件

    这意味着你的程序会将MFC的代码静态地链接到你的可执行文件中,因此,生成的exe文件不需要依赖VC运行库(即MFC的动态链接库)即可运行。这在某些情况下是有益的,例如,当目标机器上可能没有安装VC运行库或者为了...

    用C语言写得文件分割器,可分割合并任何文件,包括源代码

    在这个场景中,我们有一个使用C语言编写的文件分割器,它能够方便地对任何类型的文件进行分割和合并操作,包括源代码文件。这个工具对于处理大文件或者需要分块传输的数据尤其有用。让我们详细探讨一下这个程序的...

    如何生成库文件(MDK 和 IAR)

    然后将需要封装成库的源代码文件(如.c和.h)添加到项目中,并编写好相应的实现和接口函数。设置项目属性,找到“Output”选项卡中的“Create HEX File”设置为“No”,确保不生成可执行文件。接着,在“Utilities”...

    PE文件解析器的原理(C语言代码)

    我们可以遍历这个数组,读取每个节的名称(通常以".text"、".data"等形式表示),并获取其在文件中的位置。 对于更复杂的解析任务,如解析导入和导出表,我们需要深入理解这些结构。导入表允许程序引用其他DLL中的...

    C语言基础汇总代码,多文件编译

    - 链接:链接器将所有目标文件和库文件链接在一起,生成最终的可执行文件。 4. **软件/插件**: - 开发环境:像GCC(GNU Compiler Collection)、CLang等是常用的C语言编译器,它们包含了编译和链接的功能。同时...

    C 代码 对文件执行各种操作.rar

    本资源“C 代码 对文件执行各种操作.rar”提供了C语言实现的源码,适用于学习和实践C语言文件操作。以下是关于C语言文件操作的一些详细知识: 1. **文件指针**: - 在C语言中,文件操作通过文件指针完成。文件指针...

Global site tag (gtag.js) - Google Analytics