为什么要对C源程序进行编译、链接

求解

这是一个编程基础的问题。
目前编程语言主要有两种类型,一种是编译型语言,一种是解释型语言。二者的区别在于:编译型语言需要编译、链接生成可执行文件之后才能运行,解释型语言直接就可以运行。C语言是一种编译型语言。

对于计算机来说,只能运行二进制的机器指令。为了方便编写指令给计算机,通过简单的替换之后有了汇编语言。但是汇编语言相对来说还是相当复杂,编写软件时工作量巨大。所以就有了如C语言,C++,JAVA之类的高级语言

这些语言其实是对汇编做了抽象封装。编译这个动作就是将C语言翻译成了汇编。C语言经过编译这个动作后每个.C文件都会生成一个OBJ,链接这个动作是将多个OBJ链接到同一个可执行文件中,最后生成的是EXE文件。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-12
首先要说的是C语言属于高级语言,不能直接被计算机识别而执行,所以需要一些操作来转化。。一开始是编译预处理,对宏,包含指令,编译指令等进行处理,然后是词法语法分析,将源代码翻译成中间代码(一般是汇编),接着优化代码,,然后将中间代码翻译成机器语言(目标文件),机器语言是计算机的基层语言,能被计算机直接识别。。接着链接目标文件,生成可以执行文件。。。大概就是这样。。详细的LZ可看这个总结。。http://bbs.zdnet.com.cn/thread-1614727-1-1.html
第2个回答  2013-09-12
C 语言 属于 较为底层的语言 虽然说可以直接操控硬件但是 毕竟计算机 不是人他只认识 0 和 1 这些 当然就需要编译器来 为我们 翻译给 计算机听!! gcc编译出来的程序在本地执行
arm-linux-gcc编译出来的程序在目标机(ARM平台)上执行 嵌入式应该用交叉编译器(如果不是在ARM本身上开发)
第3个回答  2013-09-12
程序设计语言分为两类;编译型和解释型。编译型的程序设计语言就需要先编译后运行,程序在编译会产生“中间代码”,这个过程与机器无关,而运行时是运行通过编译产生的“目标代码”即机器语言。如c语言就属于这种类型。解释型,不产生“中间代码”是边解释源代码,边执行解释生成的目标代码即执行机器代码。如java语言。注:计算机只识别机器语言,即二进制。