C/C++每日一课 >> 程序是怎样生成的(2005-04-22)

/* C/C++每日一课*/
/*2005-05-14*/
/*来自 虚拟现实论坛 (http://www.3d-vr.com)*/
/*作者: srj2005*/

对于初学编程语言的朋友们来说, 可能对于自己写的一行行代码是怎么样变成一个可以执行的程序的感到费解,
看到编译器上面乱七八糟的一堆堆的选项更是望而生畏.
所以预先了解一点程序生成的过程, 对于提高自己的兴趣是很有帮助的.

和人们生活中说出来或者写出来的语言一样, 计算机语言也是一些符号用一定的
规则排列成的一个序列. 对于C语言来说, 符号很简单, 他只包括26个英文字母,数字
和少数其他几个字符, 相信念过高中的朋友都会认识. 而重要的就是这些符号排列的规则了,
也就是我们说的C语言的语法. 这里就不详细说了, 相信你既然来到这里就多多少少已经了解一些了.
好了, 现在说具体一点的, 一般你在上面写C语言代码的那个软件我们称之为C语言的
开发环境, 它除了提供一个方便的界面让你编辑文本以外, 还有两个比较重要的功能:
1. 编译功能.  也就是负责把你写的代码翻译成CPU的执行指令, 这是一个很重要的功能, 我们称它为编译器
2. 连接功能:  负责把这些指令按照一定的格式组织起来, 最终行成一个可以在指定平台(操作系统)下面运行的程序. 我们称为连接器

当我们写好一个程序文件, 也就是写好了一个按照C语言语法规则排列的一个字符序列了. 别看你在写的时候把它排列的整整齐齐,非常美观,其实
其实对于计算机来说是一点都不会欣赏的, 他只是把他当作一个字符序列.

一般写好了程序代码以后, 第一件要做的事情就是编译. 编译的时候编译器逐个读入你写的子符序列, 然后从序列中分离出他认识的词,
在根据这些词预先定义的意思(功能), 翻译成CPU指令. 这个过程是发现程序错误最多的一个过程. 因为很有可能他读的时候读到一个词,
结果发现不认识, 或者预期的下一个单词
没有出现. 这些都导致便宜无法进行下去. 这时候编译器就会把错误反馈给你, 告诉你的程序写的不对.
如果这一步成功了的话, 你写的程序这时候就变成一堆的CPU指令序列了. 也就完成了翻译的工作. 其实这个过程是一个相当复杂的过程, 就不细说了

接下来你的程序是不是就可以执行了呢? 还不可以的. 编译的时候编译器是一个源代码文件(C,CPP文件)为单位进行的.
而你可能为了使你的程序逻辑更鲜明而把代码分别放到几个文件里面去了. 这时候就会产生很多个包含着CPU指令的文件.
还有, 你的程序肯定是要在某一个操作系统上面运行的, 而不同的操作系统也有它自己的一套执行指令
组织的规则. 所以现在程序还是跑不起来的. 而这个任务就要交给连接器来完成了. 连接器负责把多个CPU指令文件
(对于C/C++编译器, 这些指令一般保存在后缀名是.OBJ的文件里面)拼节起来, 然后根据你设置的操作系统平台,
最终生成一个可以执行的文件. 比如在Window下面就是你们熟悉的.exe文件. 到此为止, 开发环境就完成了他所有的史命,让你得到了你想要的东西. 真是累坏它了

因为一般用户其实都不太关心编译和连接这两个步骤, 而只想得到最终可用的程序, 所以现在的开发环境里面一般除了编译和连接的菜单以外,
还有一个 建立(Build)菜单,也就是把这两个步骤连起来做了, 而这也是一般用户用的最多的一个选择.

阅读更多
个人分类: 开发技术
想对作者说点什么? 我来说一句

dede建站每日一课全集

2013年03月26日 644KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭