
1、预处理
在这一阶段,源码中的所有预处理语句得到处理,例如:#include语句所包含的文件内容替换掉语句本身,所有已定义的宏被展开。
根据#ifdef,#if等语句的条件是否成立取舍相应的部分,预处理之后源码中不再包含任何预处理语句。
GCC预处理阶段可以生成i的文件,通过选项-E可以使编译器在预处理结束时就停止编译。例如:gcc -E -o helloi helloc
2、编译
这一阶段,编译器对源码进行词法分析、语法分析、优化等 *** 作,最后生成汇编代码。这是整个过程中最重要的一步,因此也常把整个过程称为编译。
可以通过选项-S使GCC在进行完编译后停止,生成s的汇编程序。例如:gcc -S -o hellos helloc
3、汇编
这一阶段使用汇编器对汇编代码进行处理,生成机器语言代码,保存在后缀为o的目标文件中。
当程序由多个代码文件构成时,每个文件都要先完成汇编工作,生成o目标文件后,才能进入下一步的链接工作。
目标文件已经是最终程序的某一部分了,只是在链接之前还不能执行。可以通过-c选项生成目标文件:gcc -c -o helloo helloc
4、链接
经过汇编以后的机器代码还不能直接运行。为了使 *** 作系统能够正确加载可执行文件,文件中必须包含固定格式的信息头,还必须与系统提供的启动代码链接起来才能正常运行,这些工作都是由链接器来完成的。gcc -o hello helloc
5、运行:执行EXE文件,得到运行结果。
源程序 就是你写的源代码, 一般包括C文件和H文件 也称为源文件和头文件
程序, 说的是包括源程序和编译出来的可执行程序
一个完整的程序, 可以只有一个C文件 也可以包含多个C文件和H文件
不能。
C语言也属于高级语言的范畴,即人可以阅读。但是计算机不理解“如果”和“for”是什么意思,所以编译器需要把高级语言命令翻译成计算机可以理解的0和1指令,这样计算机就可以执行它们。
用高级语言编写的程序称为“源程序”。
用二进制代码表示的程序称为“目标程序”。
用汇编语言编写的程序称为汇编程序。
可执行文件是漂浮在 *** 作系统存储空间中的二进制可执行文件。
它可以被加载到内存中,由 *** 作系统加载和执行。
对于计算机本身,它只能接收和处理由0到1的代码组成的二进制指令和数据。
也就是说,计算机能够识别的程序就是“目标程序”。
计算可以直接执行的程序是可执行文件,即一个带有extension.exe的文件。
扩展资料:
程序运行
为了让计算机程序运行,计算机需要加载代码和数据。在电脑的底部,
这是通过将高级语言(如Java、C/c++、c#等)代码翻译成CPU能够理解并加载的机器语言来实现的。
如果您的计算机满足大多数需求, *** 作系统(如Windows、Linux等)会加载和执行很多程序
序列,其中每个程序是一个单独的映射,并不是所有的可执行程序在计算机上。
它是一系列编码指令,可以由信息处理设备(如计算机)执行,以获得结果
它可以自动转换成符号化指令序列或符号化语句序列的编码指令序列。同样的计算机程序
源程序和目标程序是相同的工作。
Source
Code
就是程序员编写的程序
别人也可以看懂的
之后经过编译
连接啥的
就是机器语言了
拿来看也没有用了
举个例子说,你在这个网页上点鼠标右键,里面有一项,查看源代码,你点一下,那麼你就看见用记事本打开的文件有许多文字了,这个就是这个网页的源代码。一般我们最终看到的用到的都是是程序,比如记事本也是个程序,网页也可以算是个我们看到的结果,浏览器也是个程序,那麼这些程序都是别人做出来的,他写的原来的代码经过处理(程序中叫编译,比如刚才看到的那些代码经过浏览器整理就是得到网页了)就是我们最终使用的东西,这些代码也有专门的编写工具(程序),比如网页代码可以用FrontPage来写,你也听过计算机语言,C语言什麼的,那麼这些语言写的代码经过整理编译最终就是我们使用的程序,比如记事本了,QQ了,等等。源代码是一般不发布的,也就是我们不能看到的,这样就可以保证这些人/公司的知识产权。我这个是最通俗的解释,没有用书上的定义给你解释,但意思是不错
以上就是关于C语言源程序到运行程序经过哪几个步骤全部的内容,包括:C语言源程序到运行程序经过哪几个步骤、C语言中源程序是什么意思、计算机能不能直接执行用C语言编写的源程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)