程序的环境

原创 2016年05月30日 13:34:47

在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其实已经是链接输出了,但输出的可执行文件仍然延续这个命名习惯。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

PDA程序运行环境

  • 2015-07-13 22:26
  • 785KB
  • 下载

1. React介绍 React开发环境搭建 React第一个程序

什么是 React        React 是 Facebook 发布的 JavaScript 库,以其高性能和独特的设计理念受到了广泛关注。React的开发背景        Facebook需要...

inno 程序安装脚本,检测.net framework 环境并提供.net 2.0sp2下载链接

inno 安装脚本
  • FL_xin
  • FL_xin
  • 2015-01-14 00:20
  • 1147

搭建微信小程序基本的https与wss环境

原文地址: http://www.wxappclub.com/topic/842 修改nginx.conf(有注释的地方改 其他的保持原样就行了) ```#user nobod...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)