`

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

 
阅读更多

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

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

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

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

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

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

 

 

 

 

2
1
分享到:
评论

相关推荐

    uClinux源代码中Make文件完全解析

    本书立足于μClinux源代码,通过分析其中的Make文件,以及与这些Make文件密切相关的部分源代码,给出一种在源代码水平上理解系统目标代码生成过程和生成原理的方法。这不仅是一本关于 Make文件编写、学习、组织、...

    谈谈c语言程序如何变成可执行文件

    组成一个程序的每个源文件通过编译过程分别转成目标代码各个目标文件由链接器捆绑在一起,形成一个单一而完整的可执行程序。链接器同时也会引入标准c函数库中的任何被改程序所用到的函数。过程如下图所示实际上,...

    bin2c:将任何二进制文件转换为 C 源代码的简单实用程序,可以稍后编译并链接到可执行文件

    将任何二进制文件转换为 C 源代码的简单实用程序,可以稍后编译并链接到可执行文件 bin2o 将任何二进制文件转换为 *.o 的简单脚本,它可以直接与其他目标文件链接到最终的可执行文件。 它还创建了适当的头文件 要求...

    C语言程序设计标准教程

    实际上在前面的各章中我们已经多次使用了文件,例如源程序文件、目标文件、可执行文件、库文件 (头文件)等。文件通常是驻留在外部介质(如磁盘等)上的, 在使用时才调入内存中来。从不同的角度可对文件作不同的分类...

    如何编写批处理文件批处理文件批处理文件

    在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一些命令到特定格式的文件中.这将在以后的例子中体现出来。 2.@ 命令 表示不显示@后面的命令,在入侵过程中(例如使用...

    C语言入门经典(第4版)--源代码及课后练习答案

    IvorHorton还著有关于C、C++和Java的多部入门级好书,如《C语言入门经典(第4版)》和《C++入门经典(第3版)》。 译者  杨浩,知名译者,大学讲师,从事机械和计算机方面的教学和研究多年,发表论文数篇,参编和翻译的...

    Lua 编译器和迭代器用于在不同的微控制器上运行(如 AVR 8 位)_C语言_代码_相关文件_下载

    在微控制器上运行的 Lua 编译器和迭代器(AVR 8 位) 关于 uLua 旨在在 RAM 等资源非常有限的微控制器上运行 Lua 脚本。...以下代码可以由 uLua 执行。 更多详情、使用方法,请下载后阅读README.md文件

    chez-exe:Chez Scheme自托管可执行文件

    chez-exe:ChezScheme自托管可执行文件该项目的目标是产生独立的可执行文件,这些文件是完整的ChezScheme系统并包含计划程序。 这是通过将ChezScheme引导文件和方案程序嵌入可执行文件来实现的。 Chez-exe将...

    C语言基础知识

    目标文件与各种库函数连接,就生成".exe"可执行文件。C程序有三种基本结构:顺序结构、选择结构、循环结构。 【要点2】main函数 又称主函数,是C程序的入口。main后面花括号括起来的部分为main函数的函数体。一个C...

    基于C++和C语言的职工管理系统开源项目设计源码

    项目共包含22个文件,其中编译后的目标文件o 6个,C++源代码文件cpp 5个,C++头文件h 5个,Markdown文档文件md 2个,Windows配置文件win 1个,开发者配置文件dev 1个,以及可执行文件exe 1个,布局文件layout 1个。...

    文本文件是怎样转换为EXE文件的

    这是一种特殊的编技术, 即把文本文件转换为可执行文件,也可以叫做TXT2EXE 功能。此编程方法不仅具有极高的实用价值,而且熟练掌握这种编程技术将使编程水平有所提高。把文本文件转换为COM 和EXE 文件都可以达到单独...

    anyexec2C:将任何可执行文件转换为 C、C# 或 Python 代码

    这是一个简单的程序,用于将任何可执行文件包装到一些源代码中。 当生成的源代码被编译和运行时,它充当引导阶段。 它从内部解压缩可执行文件,将其转储到磁盘,然后通过Unix exec syscall运行它。 从历史上看,...

    C语言编译全过程剖析

    我们只需要知道分成编译和连接两个阶段,编译阶段将源程序(*.c)转换成为目标代码(,一般是obj文件,至于具体过程就是上面说的那些阶段),连接阶段是把源程序转换成的目标代码(obj文件)与你程序里面调用的库函数...

    C语言的编译原理详解.docx

    4. 链接阶段:链接器将多个目标文件和库文件结合起来,解析符号、重定向地址、生成可执行程序。 这些阶段通过不同的工具(预处理器、编译器、汇编器和链接器)实现,最终将源代码转换为可执行程序。每个阶段都有其...

    bin2c:实用程序,用于将任何二进制文件转换为可以编译并链接到可执行文件的C源代码

    将任何二进制文件转换为可编译并链接到可执行文件的C源程序的实用程序。 bin2o 将任何二进制文件转换为* .o的实用程序,该文件可以与其他目标文件直接链接为最终可执行文件。 它还会创建适当的标头,其中包含从C源...

    Linux下C语言编程基础知识

    器给我们输出的可执行文件名为hello 而hello.c是我们的源程式文件. gcc编译器有许多选项,一般来说我们只要知道其中的几个就够了. -o选项我们已知道 了,表示我们需求输出的可执行文件名. -c选项表示我们只需求...

    drow:生成后将代码注入到ELF可执行文件中

    Drow采取以下步骤来创建新的修补ELF:映射到未修改的目标ELF可执行文件和用户提供的有效载荷(位置无关的Blob)中通过解析程序标头找到第一个可执行段通过分析节标题找到可执行段中的最后一个节通过用户提供的有效...

    C语言程序设计-C语言的特点.pptx

    在高级语言中,C语言程序编译后形成的可执行文件的体积相对较小。运 算符丰富,表达能力强。 书写格式自由 对每条语句的起始位置无任何特殊要求,不像其他高级语言那样对每一 位置均有严格规定。 1-2 C语言的特点 可...

    开放硬件以测量EC 和 pH 值、驱动泵以及通过 Wi-Fi 管理中型水培生长_C语言_代码_相关文件_下载

    这是一个单一的 PCBA,具有所有必要的 I/O 来自动化典型的中小型水培种植,可通过 Wi-Fi 进行控制。它也可能适用于水族馆、池塘或任何其他涉及水处理的生物或化学过程。输入和输出包括: 8x 12 V, 1 A 输出,用于...

Global site tag (gtag.js) - Google Analytics