程序的环境

在ANSI C的任何一种实现中,都存在两种环境,翻译环境和执行环境。

一、翻译环境

在翻译环境中源代码被转成了机器指令。

翻译由好几个步骤组成,组成一个程序的每个源文件通过编译过程分别转换成目标代码(object code)。然后目标文件由链接器捆绑在一起,形成一个单一而完整的可执行程序。链接器同时也会引入标准函数库中任何被改程序所用到的函数,包括程序员引入自己定义的头文件中的函数。这个过程发生在预处理阶段(添加头文件,替换指令,替换宏)

①预处理

这是编译过程的第一个阶段,它将一个程序引用的头文件在程序里做一份拷贝,并且替换宏等,在源代码上执行一些文本操作。

②解析

经过了编译阶段之后程序进入了解析阶段,在解析程序阶段,将产生错误报告和警告,并且在我们程序 指明优化处进行优化处理让程序的效率更高。

③生成目标文件

此时可能生成一个或多个目标文件

④链接

我们通过链接器将几个目标文件进行链接

**    在UNIX系统中C的编译器被称为cc,它可以使用许多不同的方式来调用。

1.编译一个C源代码

eg:cc  program.c

gcc  program.c

这两条指令产生的结果相同,他们会生成一个a.out可执行程序。中间会产生一个名为program.o的目标文件,但它在链接过程完成之后就会被删除。

2. 同时链接几个源文件

eg:cc  1.c  2.c  3.c

3.编译一个C源文件,并使其和现存的可执行文件链接起来

eg:cc main.c lookup.o sort.c

4.编译一个源文件并使其生成一个指定的可执行文件

eg:cc main.c -o test

此时你会发现,生成的可执行文件不再叫a.out而是叫做test

二、执行

①程序载入内存

在具有操作系统的环境里该过程由操作系统来完成。在独立环境中必须手动完成。

②初始化没有被初始化的变量

静态变量会被默认初始化,而其它没有被初始化的变量被初始化成“垃圾”

③小型启动程序

它负责处理一堆日常事务 ,比如收集命令行参数等。

④调用main函数

⑤程序的终止

这是执行的最后一个阶段,他可能由不同的原因引起,正常的终止是程序就是 main函数的返回。

程序可能是由于用户按下break键而终止也有可能是电话连接的挂起而终止,也可能是由于出现错误而出现自行中断。

知识链接:a.out是"assembler output"的缩写格式,代表汇编程序输出。在较早版本的类unix系统中,a.out是一种输出格式,用于可执行文件,目标文件和共享库。早期的 PDP-7系统上没有链接器,程序的创建过程是先把所有源文件连接成一个文件,然后进行汇编,产生的汇编程序保存在a.out中。这样a.out是名副其实的汇编输出,但到PDP-11之后,人们为其编写了链接器,程序的创建是先编译然后链接输出保存到a.out中,这时a.out其实已经是链接输出了,但输出的可执行文件仍然延续这个命名习惯。

时间: 11-28

程序的环境的相关文章

ok6410[002] ubuntu1604系统下搭配ckermit和dnw基于RAM的裸机程序调试环境

ubuntu1604系统下搭配ckermit和dnw基于RAM的裸机程序调试环境 系统:  ubuntu16.04 裸板: 飞凌公司OK6410开发板 目标:搭建基于ubuntu1604系统和基于RAM的裸机程序开发环境 1.安装配置ckermit 在ubuntu1604下一般做裸板开发时都是使用ckermit作为远程通讯终端,下面我们就开始讲解下其安装与配置. 1.1.安装ckermit 在ubuntu系统下安装ckermit,使用 sudo  apt-get  install  ckermi

一起talk GDB吧(第六回:GDB改动程序执行环境)

各位看官们,大家好,上一回中我们说的是GDB查看信息的功能,而且说了怎样使用GDB查看程序执行时的 信息.这一回中,我们继续介绍GDB的调试功能:改动程序执行环境.当然了,我们也会介绍怎样使用GDB 改动程序执行环境. 闲话休提.言归正转. 让我们一起talk GDB吧! 大家都知道程序执行时须要一个执行的环境.比方从系统中分配内存,让程序读取一些数据等等.我们接 下来说一说,怎样改动程序的执行环境.这样能够让程序依照我们我要求来执行.在改动程序执行环境中 最经常使用的是改动变量的值. 作为一款

OpenCV学习笔记(01)我的第一个OpenCV程序(环境配置)

昨天刚刚考完编译原理,私心想着可以做一些与考试无关的东西了.一直想做和图像处理相关的东西,趁这段时间有空学习一下OpenCV,搭建环境真是一件麻烦的事情,搞了近三个小时终于OK了.先来张图: 大致描述一下步骤吧: 一.安装前准备 1.VS2012(网上看到很多用的VS2010,但是基本不影响) 2.OpenCV 安装包(我下载的是最新的2.4.9) 二.安装OpenCV 1.解压OPenCV 说是安装,其实就是解压,OpenCV的Windows安装程序就是一个自解压程序: 这里我解压到C:\Pr

linux上安装eclipse并配置mapreduce程序开发环境

我们打算在linux(centos)上安装eclipse,并配置好mapreduce程序开发环境. 第一步:下载并安装eclipse(前提是已经安装好JDK) 在linux系统中打开浏览器,输入网址:http://archive.eclipse.org/eclipse/downloads/我们选择3.7.2版本. 下载下来后,文件存在于: [[email protected] Downloads]$ ll total 178052 -rw-rw-r--. 1 liuqingjie liuqing

TODO:小程序开发环境搭建

1.第一步当然是要先注册小程序了 2.登录到小程序 a)完善小程序信息,如名称,图标,描述 3.绑定开发者 4.获取AppID,并设置服务器信息 5.下载并安装开发者工具 a)使用管理员或者绑定到开发者微信号扫描登录,选择本地小程序项目 b)创建或打开项目,需要填写AppID.项目名称和本地开发目录.开发者工具左边是模拟器可模拟不同尺寸的手机,目前只可模拟iPhone和Android的机型,网络可模拟wifi,2g,3g,4g:右侧是调试工具,可编码,可调试,如果要选择界面上的元素需要切换到"W

一起talk GDB吧(第六回:GDB修改程序运行环境)

各位看官们,大家好,上一回中我们说的是GDB查看信息的功能,并且说了如何使用GDB查看程序运行时的 信息.这一回中,我们继续介绍GDB的调试功能:修改程序运行环境.当然了,我们也会介绍如何使用GDB 修改程序运行环境.闲话休提,言归正转.让我们一起talk GDB吧! 大家都知道程序运行时需要一个运行的环境,比如从系统中分配内存,让程序读取一些数据等等.我们接 下来说一说,如何修改程序的运行环境,这样可以让程序按照我们我要求来运行.在修改程序运行环境中 最常用的是修改变量的值. 作为一款优秀的调

Eclipse下编写C++程序——CDT环境搭建

很多从事C++开发的人员都选择VS作为开发平台,其实用Eclipse开发C++也是可以的.下面就讲解如何使用Eclipse的CDT搭建标准的C/C++开发环境. 1.简要介绍: 我们知道程序由源代码到最后生成可运行程序需要经过以下步骤:编辑->编译->连接.Eclipse就是编辑器,为了能编译C/C++源代码我们还需要一个编译器,这里我们选择minGW. 对于Eclipse就不作介绍了,只简要介绍一下CDT和minGW. CDT全称C/C++ Development Toolkit,是完全用

嵌入式开发板 迅为4412开发板 搭建Qt应用程序开发环境

集成开发软件qtcreator-3.2.2下载 官网下载 选择GPL/LGPL协议 选择离线下载 选择Linux Host 这里需要注意的是,如果只下载"Qt Creator",是不带运行环境的. 迅为电子网盘下载 "iTOP-4412开发板搭建编译环境所需要的工具包以及补丁包" "07-Qt_Creator" "QtE_IDE3.2.2" "qt-opensource-linux-x64-android-5.3.2

安卓程序分析环境搭建

windos分析环境搭建 温馨提示:今后我们用到的环境都会采用windows xp 32位系统 1. jdk Oracle官网下载处:http://www.oracle.com/technetwork/java/downloads/index.html   下面的是我自己找的jdk: jdk8(Win7系统):                                     http://yunpan.cn/cVsC8j7s6e9BY  访问密码 b89f jdk6:(XP系统)