C语言开发过程中目标代码文件、可执行文件和库

一、C程序开发的一般流程

  1:定义程序的目标,明确程序的功能,明确程序中需要哪些信息、计算和控制,明确程序中应该报告什么信息,不会设计到具体的计算机语言,对于问题的描述一般用的是术语;

  2:设计程序,考虑如何通过程序实现程序的目标,具体一点说,需要考虑的可以有用户界面的设计、程序的组织、目标用户的确定以及程序开发时间计划,除了这些,好需要确定是在程序中(也有可能是在辅助文件中)数据的表示形式以及数据的处理方法。这个阶段,不会用到具体的代码。问题的描述用的是一般术语,但是不排除某些决策会和具体的语言特性相关。;

  3:编写代码,具体实现设计好的程序;

  4:编译,编译的细节取决于编译环境;

  5:运行程序;

  6:测试与调试程序,找Bug,改Bug;

  7:维护与修改代码;

  8:说明,对程序给出相应的注释。

二、编译过程中涉及到的目标文件、可执行文件和库

  如下图所示,典型的C实现通过编译和链接两个步骤完成。编译器负责把源代码转换成中间代码,链接器把中间代码和其他代码合并,生成可执行文件。

  中间文件有多种形式,最普遍的一种是将源代码转换成机器语言代码,并把结果放在目标代码文件中(简称目标文件)。虽然目标文件中包含机器语言代码,但并不能直接运行。因为其中存储的是编译器翻译的源代码,还不是一个完整的程序。

  目标代码文件缺失启动代码(startup code)。启动代码充当着程序与操作系统之间的接口。

  目标代码还缺少库函数。几乎所有的C程序都需要使用C标准库中的函数。举例:源码中使用printf()函数,编译过程中的目标文件并不包含该函数的代码,仅仅是包含了使用该函数的指令。真正实现printf()功能的代码存放在‘库’文件中,库文件中包含很多功能函数的目标代码。

  链接器的作用:将转换成目标代码、系统的标准启动代码、库代码这3部分进行合并,生成一个可执行文件。链接过程中,从库文件中提取的仅仅是程序中需要用到的。

  简而言之,不管是目标文件还是可执行文件,其中存储的都是机器语言代码。不同的是,目标文件中包含的仅仅是将自己写的源代码原原本本转换出来的结果,目标文件中存储的,除了源代码的转换结果,还包括了相关的启动文件和库函数的机器代码。

原文地址:https://www.cnblogs.com/wyt123/p/10916836.html

时间: 2024-07-31 01:51:50

C语言开发过程中目标代码文件、可执行文件和库的相关文章

C基础——目标代码文件、可执行文件和库

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

C:目标代码文件、 可执行文件和库

C编程的基本策略是, 用程序把源代码文件转换为可执行文件(其中包含可直接运行的机器语言代码). 典型的C实现通过编译和链接两个步骤来完成这一过程. 编译器把源代码转换成中间代码, 链接器把中间代码和其他代码合并, 生成可执行文件. C 使用这种分而治之的方法方便对程序进行模块化, 可以独立编译单独的模块, 稍后再用链接器合并已编译的模块. 通过这种方式, 如果只更改某个模块, 不必因此重新编译其他模块. 另外, 链接器还将你编写的程序和预编译的库代码合并. 中间文件有多种形式. 我们在这里描述的

目标代码文件、可执行文件和库

C程序的执行过程可分为:编辑.编译.连接.运行. 将程序源代码转换为可执行文件,需要编译与连接这两个步骤.编译器将源代码转换为中间代码,然后链接器将此中间代码与其他代码结合起来,生成可执行文件.同时,链接器将你的程序与预编译的库代码结合起来. 目标代码文件所缺少的第一个元素是一种叫启动代码的东西(start-up code),此代码相当于你的程序与操作系统之间的接口. 缺少的第二个东西是库例程的代码,也称为函数. 而链接器的作用就是将目标代码.启动代码和库代码结合在一起,并放在单个文件里,这个文

本机修改虚拟机linux中的代码文件

最近在研究swoole这个框架,好不容易装了一个swoole,为了开发方面,需要早宿主机和虚拟机之间文件共享,一开始使用vmware tool可以实现共享,但是只能在linux中看到win共享的文件,无法实现在win上修改linux中的代码文件. 于是接着寻找办法,使用samba可以实现: (感谢网友的分享[ http://lxsym.blog.51cto.com/1364623/289156/ ]) 注意:本文的原则是只将文件共享应用于内网服务器,并让将要被共享的目录拥有充分的读写权限属性,读

C#项目中操作Excel文件——使用NPOI库

转载自:http://blog.csdn.net/dcrmg/article/details/52356236# 感谢-牧野- 实际C#项目中经常会涉及到需要对本地Excel文件进行操作,特别是一些包含数据记录.分析.汇总功能模块的项目.常用的操作Excel文件的方法主要有三个: 1. OleDb: 这种方式是把整个Excel文件当做一个数据源来进行数据的读取操作. 优点:实现方式简单,读取速度快: 缺点:读取Excel数据的过程不太灵活,对内存的占用比较高,当数据量变的很大时,容易由于内存空间

001-目标代码文件、可执行文件和库

C编程的基本策略是使用程序将源代码文件转换为可执行文件.C分两步完成这一工作:编译和链接. 编译器将源代码转换为中间代码,链接器将此中间代码与其他代码结合起来生成可执行文件. 中间文件的形式有多选择.最一般的选择是将源代码转换为机器语言代码,将其结果放置在一个目标代码文件中. 目标代码文件缺少的元素:启动代码:库例程代码 链结器的作用是将目标代码,系统的标准启动代码和库代码结合在一起,形成可执行文件.

软件源代码与目标代码应区别保护(转载新闻)

正如美国微软公司的新任首席执行官塞亚·纳德拉所言:“当今世界是由软件所驱动的”,软件的重要性毋庸赘言,我国将软件纳入著作权法保护已有23年, 但至今软件的法律定义与法律保护仍很模糊.我国现行<计算机软件保护条例>将同一计算机程序的源程序与目标程序视为同一作品,然而源程序与目标程序的本质 属性并不相同,条例中的谬误会对软件的保护产生不利影响.因此,我国有必要重新审视软件的法律本质从而完善软件的法律保护制度,或对软件另行制定特别法来保护与规制. 本文经阐述软件著作权保护的冲突根源,指出现行<

net开发过程中Bin目录net开发过程中Bin目录下面几种文件

.net开发过程中Bin目录下面几种文件格式的解释 在.NET开发中,我们经常会在bin目录下面看到这些类型的文件: .pdb..xsd..vshost.exe..exe..exe.config..vshost.exe.config 项目发布的时候,往往搞不清楚哪些是需要的,那些是不需要的.那么这些格式的文件到底是干什么用的呢? pdb .pdb文件,是VS生成的用于调试的符号文件(program database),保存着调试的信息.在VS的工程属性,C/C++,调试信息格式,设置/Zi,那么

代码开发过程中对日志的使用总结

在日常开发过程中,日志是代码的必要组成部分,一个好的代码也必然有一个好的日志输出,优秀的日志不仅可以快速帮助我们分析定位问题还可以在对日志的数据挖掘中产生很大的威力. 1.java在发生异常时可以打印它的堆栈信息以帮助调试,但是java的异常也有下列问题: 1)java出现异常时只能展示静态的调用堆栈信息,对应异常之前的调用参数则无法进行展示,也就是只知道哪里发生了异常,而不知道是哪些数据导致了异常: 2)java的异常堆栈通常是直接定位到某个文件的某一行,在发生异常时,如果不看代码都不知道异常