- 浏览: 279268 次
- 性别:
文章分类
最新评论
C编程的基本策略是使用程序将源代码文件转换为可执行文件,此文件包含可运行的机器语言代码。 C分两步完成这一工作:编译和链接。编译器将源代码转换为中间代码,连接器将此中间代码与其他代码相结合来生成可执行文件。C使用编译和链接生成可执行文件的方法便于程序的模块化。您可以分别编译各个模块,然后使用连接器将编译过的模块结合起来。这样,如果需要改变一个模块,则不必重新编译所有其他模块。同时,连接器将程序与预编译的库代码结合起来。
中间文件的形式有多种选择。最一般的选择,是将源代码转换为机器语言代码,将结果放置在目标代码文件中。虽然目标文件包含机器语言代码,但该文件还不能运行。目标文件包含源代码的转换结果,但还不是一个完整的程序。
目标代码文件中能够缺少的一个元素是一种叫做启动代码(start-up code)的东西,此代码相当于您程序和操作系统之间的接口。例如:可以在DOS或linux下运行一个IBM PC兼容机,在这两种情况中硬件是相同的,若以都会使用相同的目标代码,但是DOS与Linux要使用不同的启动代码,因为这两种系统处理程序的方式不同。
目标代码文件所缺少的第二个元素是库例程的代码。几乎所用C程序都利用标准C库中所包含的例程(称为函数)。例如有的程序中的printf()函数,目标代码文件不包含这一函数代码,他只包含声明使用printf()函数的指令,实际代码存储在另一个称为“库”的文件中。库文件中包含许多函数的目标代码。
链接器的作用是将目标代码,系统的标注启动代码和库代码结合在一起,并将它们存放在单个文件,即可执行文件中。对库代码来说,连接器中从库中提取程序使用的函数的代码。
简而言之,目标文件和可执行文件都是有机器语言指令组成的。但目标文件之包含您所编写的代码转换成的机器语言,而可执行文件还包含您所使用你哦个的库函数已经启动代码的机器代码。
发表评论
-
C中结构体
2013-01-09 15:47 591把结构体保存到文件中,用fwrite()函数: fwrite ... -
关于socket编程中基本函数介绍
2012-11-03 13:57 997源自:http://blog.sina.com.cn/s/bl ... -
C中需要注意的小问题
2012-09-27 08:59 7831.在用scanf()函数读入double型数值时要用%lf的 ... -
指针和多维数组
2011-12-26 10:03 786摘自:《C primer plus》 指针和多位数组 ... -
C中<ctype.h>库
2011-12-19 20:21 695标准库<ctype.h> 1 ... -
C中double类型数据的输入和输出
2011-12-19 10:04 12347double a; scanf(" ... -
C中printf()和scanf()函数说明
2011-12-16 19:58 1559下面是对printf()和scanf()函数的说明: ... -
C中转义序列及其含义
2011-12-15 20:27 942转义序列: 序列 ... -
C中各数据类型取值范围
2011-12-15 19:31 13651.标准头文件<limits.h>中包含了 ... -
C中常用的类型转换函数
2011-12-14 17:34 785源自:http://hi.baidu.com/hao_%BF% ... -
C语言格式化输出系统时间
2011-12-14 17:04 5899源自:http://blog.csdn.net/jiadeli ... -
vs2008下vc的库函数及头文件存放位置
2011-12-13 22:14 4504在写C/C++程序时总会在开头包含一些头文件,如:#inclu ... -
malloc()函数
2011-12-12 17:35 0待写 -
用C写的模拟掷骰子程序
2011-12-12 16:47 2321整理自:《C Primer Plus》第五版 此程序包 ... -
C中字符串的输入输出及相关函数
2011-12-27 21:59 3822//本节内容摘自对Stephen Prata的《C Prime ... -
指针的基本操作以及关于指针的注意事项
2011-12-11 17:42 896一. 指针的基本操作有:赋值(assignment),求值(v ... -
关于*与++的优先级
2011-12-11 16:53 1663C中一元运算符*和++具有相等的优先级,但它们在结合时是从右向 ... -
C中关于数组参数的传递
2011-12-09 11:43 894编写一个对数组进行操作的函数,目的是返回数组内所用元素的和。 ... -
C中有关数组的说明
2011-12-09 11:10 747下面介绍一下关于数组的一些说明: 在数组声明时必须 ... -
C语言中对sizeof()和strlen()的说明
2011-12-09 10:01 10931.sizeof函数 sizeof函数返回表达式所占的内存空 ...
相关推荐
本书立足于μClinux源代码,通过分析其中的Make文件,以及与这些Make文件密切相关的部分源代码,给出一种在源代码水平上理解系统目标代码生成过程和生成原理的方法。这不仅是一本关于 Make文件编写、学习、组织、...
组成一个程序的每个源文件通过编译过程分别转成目标代码各个目标文件由链接器捆绑在一起,形成一个单一而完整的可执行程序。链接器同时也会引入标准c函数库中的任何被改程序所用到的函数。过程如下图所示实际上,...
将任何二进制文件转换为 C 源代码的简单实用程序,可以稍后编译并链接到可执行文件 bin2o 将任何二进制文件转换为 *.o 的简单脚本,它可以直接与其他目标文件链接到最终的可执行文件。 它还创建了适当的头文件 要求...
实际上在前面的各章中我们已经多次使用了文件,例如源程序文件、目标文件、可执行文件、库文件 (头文件)等。文件通常是驻留在外部介质(如磁盘等)上的, 在使用时才调入内存中来。从不同的角度可对文件作不同的分类...
在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一些命令到特定格式的文件中.这将在以后的例子中体现出来。 2.@ 命令 表示不显示@后面的命令,在入侵过程中(例如使用...
IvorHorton还著有关于C、C++和Java的多部入门级好书,如《C语言入门经典(第4版)》和《C++入门经典(第3版)》。 译者 杨浩,知名译者,大学讲师,从事机械和计算机方面的教学和研究多年,发表论文数篇,参编和翻译的...
在微控制器上运行的 Lua 编译器和迭代器(AVR 8 位) 关于 uLua 旨在在 RAM 等资源非常有限的微控制器上运行 Lua 脚本。...以下代码可以由 uLua 执行。 更多详情、使用方法,请下载后阅读README.md文件
chez-exe:ChezScheme自托管可执行文件该项目的目标是产生独立的可执行文件,这些文件是完整的ChezScheme系统并包含计划程序。 这是通过将ChezScheme引导文件和方案程序嵌入可执行文件来实现的。 Chez-exe将...
目标文件与各种库函数连接,就生成".exe"可执行文件。C程序有三种基本结构:顺序结构、选择结构、循环结构。 【要点2】main函数 又称主函数,是C程序的入口。main后面花括号括起来的部分为main函数的函数体。一个C...
项目共包含22个文件,其中编译后的目标文件o 6个,C++源代码文件cpp 5个,C++头文件h 5个,Markdown文档文件md 2个,Windows配置文件win 1个,开发者配置文件dev 1个,以及可执行文件exe 1个,布局文件layout 1个。...
这是一种特殊的编技术, 即把文本文件转换为可执行文件,也可以叫做TXT2EXE 功能。此编程方法不仅具有极高的实用价值,而且熟练掌握这种编程技术将使编程水平有所提高。把文本文件转换为COM 和EXE 文件都可以达到单独...
这是一个简单的程序,用于将任何可执行文件包装到一些源代码中。 当生成的源代码被编译和运行时,它充当引导阶段。 它从内部解压缩可执行文件,将其转储到磁盘,然后通过Unix exec syscall运行它。 从历史上看,...
我们只需要知道分成编译和连接两个阶段,编译阶段将源程序(*.c)转换成为目标代码(,一般是obj文件,至于具体过程就是上面说的那些阶段),连接阶段是把源程序转换成的目标代码(obj文件)与你程序里面调用的库函数...
4. 链接阶段:链接器将多个目标文件和库文件结合起来,解析符号、重定向地址、生成可执行程序。 这些阶段通过不同的工具(预处理器、编译器、汇编器和链接器)实现,最终将源代码转换为可执行程序。每个阶段都有其...
将任何二进制文件转换为可编译并链接到可执行文件的C源程序的实用程序。 bin2o 将任何二进制文件转换为* .o的实用程序,该文件可以与其他目标文件直接链接为最终可执行文件。 它还会创建适当的标头,其中包含从C源...
器给我们输出的可执行文件名为hello 而hello.c是我们的源程式文件. gcc编译器有许多选项,一般来说我们只要知道其中的几个就够了. -o选项我们已知道 了,表示我们需求输出的可执行文件名. -c选项表示我们只需求...
Drow采取以下步骤来创建新的修补ELF:映射到未修改的目标ELF可执行文件和用户提供的有效载荷(位置无关的Blob)中通过解析程序标头找到第一个可执行段通过分析节标题找到可执行段中的最后一个节通过用户提供的有效...
在高级语言中,C语言程序编译后形成的可执行文件的体积相对较小。运 算符丰富,表达能力强。 书写格式自由 对每条语句的起始位置无任何特殊要求,不像其他高级语言那样对每一 位置均有严格规定。 1-2 C语言的特点 可...
这是一个单一的 PCBA,具有所有必要的 I/O 来自动化典型的中小型水培种植,可通过 Wi-Fi 进行控制。它也可能适用于水族馆、池塘或任何其他涉及水处理的生物或化学过程。输入和输出包括: 8x 12 V, 1 A 输出,用于...